This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author vstinner
Recipients dstufft, jbeck, tim.peters, vstinner
Date 2015-09-08.21:46:16
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1441748777.17.0.19708740096.issue25003@psf.upfronthosting.co.za>
In-reply-to
Content
> Perhaps the getentropy() check can explicitly rule out Solaris (either at the autoconf level or in the random.c source code) if you prefer to keep the getentropy() call on OpenBSD.

Ok, here is a patch implementing this option. It keeps getentropy() on OpenBSD for os.urandom(), but it disables getentropy() on Solaris for os.urandom().

I don't know if my py_getrandom() function calling syscall(SYS_getrandom, buffer, size, 0) works on Solaris. The flags are hardcoded, and I don't know if the <sys/syscall.h> include is enough to get the syscall() function. (Does Solaris uses the GNU C library?)

@jbeck: Can you please test this patch on the default branch of Python? Can you tell if the HAVE_GETRANDOM_SYSCALL check succeed on Solaris? (do you have "#define HAVE_GETRANDOM_SYSCALL 1" in pyconfig.h?)

The configure scripts tries to compile the following C program:

    #include <sys/syscall.h>

    int main() {
        const int flags = 0;
        char buffer[1];
        int n;
        /* ignore the result, Python checks for ENOSYS at runtime */
        (void)syscall(SYS_getrandom, buffer, sizeof(buffer), flags);
        return 0;
    }
History
Date User Action Args
2015-09-08 21:46:17vstinnersetrecipients: + vstinner, tim.peters, dstufft, jbeck
2015-09-08 21:46:17vstinnersetmessageid: <1441748777.17.0.19708740096.issue25003@psf.upfronthosting.co.za>
2015-09-08 21:46:17vstinnerlinkissue25003 messages
2015-09-08 21:46:16vstinnercreate