@@ -213,6 +213,12 @@ This library contains implementation for the random number generator.
213213 #ifndef EBSNET
214214 #include <unistd.h>
215215 #endif
216+ /* O_CLOEXEC is preferred (atomic close-on-exec at open() time) but
217+ * is unavailable on older kernels and some platforms; fall back to a
218+ * no-op so the | flag has no effect. */
219+ #ifndef O_CLOEXEC
220+ #define O_CLOEXEC 0
221+ #endif
216222#endif
217223
218224#if defined(WOLFSSL_SILABS_SE_ACCEL )
@@ -3829,15 +3835,15 @@ int wc_GenerateSeed(OS_Seed* os, byte* output, word32 sz)
38293835 if (!os -> seedFdOpen )
38303836 {
38313837 #ifndef NO_DEV_URANDOM /* way to disable use of /dev/urandom */
3832- os -> fd = open ("/dev/urandom" , O_RDONLY | WC_CLOEXEC );
3838+ os -> fd = open ("/dev/urandom" , O_RDONLY | O_CLOEXEC );
38333839 #if defined(DEBUG_WOLFSSL )
38343840 WOLFSSL_MSG ("opened /dev/urandom." );
38353841 #endif /* DEBUG_WOLFSSL */
38363842 if (os -> fd == XBADFD )
38373843 #endif /* NO_DEV_URANDOM */
38383844 {
38393845 /* may still have /dev/random */
3840- os -> fd = open ("/dev/random" , O_RDONLY | WC_CLOEXEC );
3846+ os -> fd = open ("/dev/random" , O_RDONLY | O_CLOEXEC );
38413847 #if defined(DEBUG_WOLFSSL )
38423848 WOLFSSL_MSG ("opened /dev/random." );
38433849 #endif /* DEBUG_WOLFSSL */
@@ -3855,15 +3861,15 @@ int wc_GenerateSeed(OS_Seed* os, byte* output, word32 sz)
38553861 }
38563862 #else /* WOLFSSL_KEEP_RNG_SEED_FD_OPEN */
38573863 #ifndef NO_DEV_URANDOM /* way to disable use of /dev/urandom */
3858- os -> fd = open ("/dev/urandom" , O_RDONLY | WC_CLOEXEC );
3864+ os -> fd = open ("/dev/urandom" , O_RDONLY | O_CLOEXEC );
38593865 #if defined(DEBUG_WOLFSSL )
38603866 WOLFSSL_MSG ("opened /dev/urandom." );
38613867 #endif /* DEBUG_WOLFSSL */
38623868 if (os -> fd == XBADFD )
38633869 #endif /* !NO_DEV_URANDOM */
38643870 {
38653871 /* may still have /dev/random */
3866- os -> fd = open ("/dev/random" , O_RDONLY | WC_CLOEXEC );
3872+ os -> fd = open ("/dev/random" , O_RDONLY | O_CLOEXEC );
38673873 #if defined(DEBUG_WOLFSSL )
38683874 WOLFSSL_MSG ("opened /dev/random." );
38693875 #endif /* DEBUG_WOLFSSL */
@@ -3940,11 +3946,14 @@ int wc_GenerateSeed(OS_Seed* os, byte* output, word32 sz)
39403946
39413947#if defined(CUSTOM_RAND_GENERATE_BLOCK ) && defined(WOLFSSL_KCAPI )
39423948#include <fcntl.h>
3949+ #ifndef O_CLOEXEC
3950+ #define O_CLOEXEC 0
3951+ #endif
39433952int wc_hwrng_generate_block (byte * output , word32 sz )
39443953{
39453954 int fd ;
39463955 int ret = 0 ;
3947- fd = open ("/dev/hwrng" , O_RDONLY | WC_CLOEXEC );
3956+ fd = open ("/dev/hwrng" , O_RDONLY | O_CLOEXEC );
39483957 if (fd == -1 )
39493958 return OPEN_RAN_E ;
39503959 while (sz )
0 commit comments