Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Wed, 28 Jan 2015 10:10:53 +0100
From: Daniel Cegiełka <daniel.cegielka@...il.com>
To: musl@...ts.openwall.com
Subject: Re: getrandom syscall

2015-01-28 10:02 GMT+01:00 Szabolcs Nagy <nsz@...t70.net>:
> * Daniel Cegie??ka <daniel.cegielka@...il.com> [2015-01-27 23:12:46 +0100]:
>> #include <stddef.h>
>> #include <errno.h>
>> #include "syscall.h"
>>
>
> #ifdef SYS_getrandom
>
>> int getrandom(void *buf, size_t len)
>> {
>>       int ret, pre_errno = errno;
>>
>>       if (len > 256) {
>>               errno = EIO;
>>               return -1;
>>       }
>>       do {
>>               ret = syscall(SYS_getrandom, buf, len, 0);
>>       } while (ret == -1 && errno == EINTR);
>>       if (ret != len)
>>               return -1;
>>       errno = pre_errno;
>>       return 0;
>> }
>
> #endif
>
> eg sh does not have the syscall (linux is not consistent with
> syscalls for whatever reason)

SYS_getrandom is defined on musl, so #ifdef SYS_getrandom is not a
good solution:

http://git.musl-libc.org/cgit/musl/tree/arch/x86_64/bits/syscall.h#n657

It's better to return an error.

Daniel

Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.