wolfcrypt/src/random.c: fix clang-diagnostic-unreachable-code in wc_GenerateSeed().

This commit is contained in:
Daniel Pouzzner
2025-12-24 17:48:37 -06:00
parent 019a420187
commit a944575e4b

View File

@@ -3420,14 +3420,20 @@ int wc_GenerateSeed(OS_Seed* os, byte* output, word32 sz)
#ifdef HAVE_ENTROPY_MEMUSE
ret = wc_Entropy_Get(MAX_ENTROPY_BITS, output, sz);
if (ret == 0) {
return 0;
/* success, we're done */
return ret;
}
#ifdef ENTROPY_MEMUSE_FORCE_FAILURE
/* Don't fallback to /dev/urandom. */
#ifdef ENTROPY_MEMUSE_FORCE_FAILURE
/* Don't fall back to /dev/urandom. */
return ret;
#else
/* Reset error and fall back to using /dev/urandom. */
ret = 0;
#endif
#endif
#if !defined(HAVE_ENTROPY_MEMUSE) || !defined(ENTROPY_MEMUSE_FORCE_FAILURE)
#if defined(HAVE_INTEL_RDSEED) || defined(HAVE_AMD_RDSEED)
if (IS_INTEL_RDSEED(intel_flags)) {
ret = wc_GenerateSeed_IntelRD(NULL, output, sz);
@@ -3436,15 +3442,24 @@ int wc_GenerateSeed(OS_Seed* os, byte* output, word32 sz)
return ret;
}
#ifdef FORCE_FAILURE_RDSEED
/* don't fallback to /dev/urandom */
/* Don't fall back to /dev/urandom. */
return ret;
#else
/* reset error and fallback to using /dev/urandom */
/* Reset error and fall back to using /dev/urandom. */
ret = 0;
#endif
}
#ifdef FORCE_FAILURE_RDSEED
else {
/* Don't fall back to /dev/urandom */
return MISSING_RNG_E;
}
#endif
#endif /* HAVE_INTEL_RDSEED || HAVE_AMD_RDSEED */
#if (!defined(HAVE_INTEL_RDSEED) && !defined(HAVE_AMD_RDSEED)) || \
!defined(FORCE_FAILURE_RDSEED)
#if defined(WOLFSSL_GETRANDOM) || defined(HAVE_GETRANDOM)
{
word32 grSz = sz;
@@ -3472,16 +3487,20 @@ int wc_GenerateSeed(OS_Seed* os, byte* output, word32 sz)
if (ret == 0)
return ret;
#ifdef FORCE_FAILURE_GETRANDOM
/* don't fallback to /dev/urandom */
/* don't fall back to /dev/urandom */
return ret;
#elif !defined(NO_FILESYSTEM)
/* reset error and fallback to using /dev/urandom if filesystem
/* reset error and fall back to using /dev/urandom if filesystem
* support is compiled in */
ret = 0;
#endif
}
#endif
#endif /* (!HAVE_INTEL_RDSEED && !HAVE_AMD_RDSEED) || !FORCE_FAILURE_RDSEED */
#endif /*!HAVE_ENTROPY_MEMUSE || !ENTROPY_MEMUSE_FORCE_FAILURE */
#ifndef NO_FILESYSTEM
#ifndef NO_DEV_URANDOM /* way to disable use of /dev/urandom */
os->fd = open("/dev/urandom", O_RDONLY);