Skip to content

Commit eeb9e1e

Browse files
committed
backport a944575 to wolfcrypt/src/random.c: fix clang-diagnostic-unreachable-code in wc_GenerateSeed().
1 parent 57d2391 commit eeb9e1e

1 file changed

Lines changed: 26 additions & 7 deletions

File tree

wolfcrypt/src/random.c

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3417,14 +3417,20 @@ int wc_GenerateSeed(OS_Seed* os, byte* output, word32 sz)
34173417
#ifdef HAVE_ENTROPY_MEMUSE
34183418
ret = wc_Entropy_Get(MAX_ENTROPY_BITS, output, sz);
34193419
if (ret == 0) {
3420-
return 0;
3420+
/* success, we're done */
3421+
return ret;
34213422
}
3422-
#ifdef ENTROPY_MEMUSE_FORCE_FAILURE
3423-
/* Don't fallback to /dev/urandom. */
3423+
#ifdef ENTROPY_MEMUSE_FORCE_FAILURE
3424+
/* Don't fall back to /dev/urandom. */
34243425
return ret;
3426+
#else
3427+
/* Reset error and fall back to using /dev/urandom. */
3428+
ret = 0;
34253429
#endif
34263430
#endif
34273431

3432+
#if !defined(HAVE_ENTROPY_MEMUSE) || !defined(ENTROPY_MEMUSE_FORCE_FAILURE)
3433+
34283434
#if defined(HAVE_INTEL_RDSEED) || defined(HAVE_AMD_RDSEED)
34293435
if (IS_INTEL_RDSEED(intel_flags)) {
34303436
ret = wc_GenerateSeed_IntelRD(NULL, output, sz);
@@ -3433,15 +3439,24 @@ int wc_GenerateSeed(OS_Seed* os, byte* output, word32 sz)
34333439
return ret;
34343440
}
34353441
#ifdef FORCE_FAILURE_RDSEED
3436-
/* don't fallback to /dev/urandom */
3442+
/* Don't fall back to /dev/urandom. */
34373443
return ret;
34383444
#else
3439-
/* reset error and fallback to using /dev/urandom */
3445+
/* Reset error and fall back to using /dev/urandom. */
34403446
ret = 0;
34413447
#endif
34423448
}
3449+
#ifdef FORCE_FAILURE_RDSEED
3450+
else {
3451+
/* Don't fall back to /dev/urandom */
3452+
return MISSING_RNG_E;
3453+
}
3454+
#endif
34433455
#endif /* HAVE_INTEL_RDSEED || HAVE_AMD_RDSEED */
34443456

3457+
#if (!defined(HAVE_INTEL_RDSEED) && !defined(HAVE_AMD_RDSEED)) || \
3458+
!defined(FORCE_FAILURE_RDSEED)
3459+
34453460
#if defined(WOLFSSL_GETRANDOM) || defined(HAVE_GETRANDOM)
34463461
{
34473462
word32 grSz = sz;
@@ -3469,16 +3484,20 @@ int wc_GenerateSeed(OS_Seed* os, byte* output, word32 sz)
34693484
if (ret == 0)
34703485
return ret;
34713486
#ifdef FORCE_FAILURE_GETRANDOM
3472-
/* don't fallback to /dev/urandom */
3487+
/* don't fall back to /dev/urandom */
34733488
return ret;
34743489
#elif !defined(NO_FILESYSTEM)
3475-
/* reset error and fallback to using /dev/urandom if filesystem
3490+
/* reset error and fall back to using /dev/urandom if filesystem
34763491
* support is compiled in */
34773492
ret = 0;
34783493
#endif
34793494
}
34803495
#endif
34813496

3497+
#endif /* (!HAVE_INTEL_RDSEED && !HAVE_AMD_RDSEED) || !FORCE_FAILURE_RDSEED */
3498+
3499+
#endif /*!HAVE_ENTROPY_MEMUSE || !ENTROPY_MEMUSE_FORCE_FAILURE */
3500+
34823501
#ifndef NO_FILESYSTEM
34833502
#ifndef NO_DEV_URANDOM /* way to disable use of /dev/urandom */
34843503
os->fd = open("/dev/urandom", O_RDONLY);

0 commit comments

Comments
 (0)