[v3] getrandom system call wrapper [BZ #17252]

Message ID 6b46f44b-b651-97cb-e6c0-a11213aa438a@redhat.com
State Dropped
Headers

Commit Message

Florian Weimer Sept. 8, 2016, 2:02 p.m. UTC
  On 09/08/2016 03:54 PM, Andreas Schwab wrote:
> On Sep 08 2016, Florian Weimer <fweimer@redhat.com> wrote:
>
>> On 09/08/2016 03:36 PM, Andreas Schwab wrote:
>>> On Sep 08 2016, Florian Weimer <fweimer@redhat.com> wrote:
>>>
>>>> On 09/08/2016 03:19 PM, Andreas Schwab wrote:
>>>>> On Sep 08 2016, Florian Weimer <fweimer@redhat.com> wrote:
>>>>>
>>>>>> On 09/08/2016 03:01 PM, Andreas Schwab wrote:
>>>>>>> On Sep 08 2016, Florian Weimer <fweimer@redhat.com> wrote:
>>>>>>>
>>>>>>>> I have retained the __getrandom symbol mangling.  The justification for
>>>>>>>> that is that getrandom is a fairly common name.  Application code might
>>>>>>>> use it for something else entirely and interpose their definition, so that
>>>>>>>> libraries cannot rely on it doing the right thing.  I think the mangling
>>>>>>>> is justified because it is hard to spot that getrandom is broken due to
>>>>>>>> interposition.  As <sys/random.h> is a new header, the macro will be
>>>>>>>> exposed to few applications.
>>>>>>>
>>>>>>> It makes it impossible to take the address of the function, though.
>>>>>>
>>>>>> It does.  Do you have a better suggestion to achieve the same effect?
>>>>>
>>>>> If getrandom is ever standardized be POSIX this will have to be reverted
>>>>> anyway.
>>>>
>>>> So you don't object to this approach?
>>>
>>> Not providing a getrandom symbol is a bug.
>>
>> Is this better?
>
> You need to add the alias it to the stub, too.

Ahh, good catch.

How does this work?  Like this?

+weak_alias (__getrandom, getrand)

Thanks,
Florian
  

Comments

Andreas Schwab Sept. 8, 2016, 3:55 p.m. UTC | #1
On Sep 08 2016, Florian Weimer <fweimer@redhat.com> wrote:

> How does this work?  Like this?
>
> diff --git a/stdlib/getrandom.c b/stdlib/getrandom.c
> index f0b3181..bb22dd8 100644
> --- a/stdlib/getrandom.c
> +++ b/stdlib/getrandom.c
> @@ -29,3 +29,5 @@ __getrandom (void *buffer, size_t length, unsigned int
> flags)
>  }
>
>  stub_warning (__getrandom)
> +
> +weak_alias (__getrandom, getrand)

Modulo typo.

Andreas.
  

Patch

diff --git a/stdlib/getrandom.c b/stdlib/getrandom.c
index f0b3181..bb22dd8 100644
--- a/stdlib/getrandom.c
+++ b/stdlib/getrandom.c
@@ -29,3 +29,5 @@  __getrandom (void *buffer, size_t length, unsigned int 
flags)
  }

  stub_warning (__getrandom)
+