Skip to content

Commit 48d6811

Browse files
authored
Merge pull request #9582 from douzzer/20251224-wc_GenerateSeed-unreachable-code
20251224-wc_GenerateSeed-unreachable-code
2 parents ff14797 + f4f4c7c commit 48d6811

File tree

2 files changed

+28
-7
lines changed

2 files changed

+28
-7
lines changed

src/ssl.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7468,6 +7468,8 @@ static int check_cert_key(const DerBuffer* cert, const DerBuffer* key,
74687468
}
74697469

74707470
if (ret == WC_NO_ERR_TRACE(CRYPTOCB_UNAVAILABLE))
7471+
#else
7472+
if (ret == WOLFSSL_SUCCESS)
74717473
#endif /* WOLF_PRIVATE_KEY_ID */
74727474
{
74737475
ret = wc_CheckPrivateKeyCert(buff, size, der, 1, heap);

wolfcrypt/src/random.c

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3420,14 +3420,20 @@ int wc_GenerateSeed(OS_Seed* os, byte* output, word32 sz)
34203420
#ifdef HAVE_ENTROPY_MEMUSE
34213421
ret = wc_Entropy_Get(MAX_ENTROPY_BITS, output, sz);
34223422
if (ret == 0) {
3423-
return 0;
3423+
/* success, we're done */
3424+
return ret;
34243425
}
3425-
#ifdef ENTROPY_MEMUSE_FORCE_FAILURE
3426-
/* Don't fallback to /dev/urandom. */
3426+
#ifdef ENTROPY_MEMUSE_FORCE_FAILURE
3427+
/* Don't fall back to /dev/urandom. */
34273428
return ret;
3429+
#else
3430+
/* Reset error and fall back to using /dev/urandom. */
3431+
ret = 0;
34283432
#endif
34293433
#endif
34303434

3435+
#if !defined(HAVE_ENTROPY_MEMUSE) || !defined(ENTROPY_MEMUSE_FORCE_FAILURE)
3436+
34313437
#if defined(HAVE_INTEL_RDSEED) || defined(HAVE_AMD_RDSEED)
34323438
if (IS_INTEL_RDSEED(intel_flags)) {
34333439
ret = wc_GenerateSeed_IntelRD(NULL, output, sz);
@@ -3436,15 +3442,24 @@ int wc_GenerateSeed(OS_Seed* os, byte* output, word32 sz)
34363442
return ret;
34373443
}
34383444
#ifdef FORCE_FAILURE_RDSEED
3439-
/* don't fallback to /dev/urandom */
3445+
/* Don't fall back to /dev/urandom. */
34403446
return ret;
34413447
#else
3442-
/* reset error and fallback to using /dev/urandom */
3448+
/* Reset error and fall back to using /dev/urandom. */
34433449
ret = 0;
34443450
#endif
34453451
}
3452+
#ifdef FORCE_FAILURE_RDSEED
3453+
else {
3454+
/* Don't fall back to /dev/urandom */
3455+
return MISSING_RNG_E;
3456+
}
3457+
#endif
34463458
#endif /* HAVE_INTEL_RDSEED || HAVE_AMD_RDSEED */
34473459

3460+
#if (!defined(HAVE_INTEL_RDSEED) && !defined(HAVE_AMD_RDSEED)) || \
3461+
!defined(FORCE_FAILURE_RDSEED)
3462+
34483463
#if defined(WOLFSSL_GETRANDOM) || defined(HAVE_GETRANDOM)
34493464
{
34503465
word32 grSz = sz;
@@ -3472,16 +3487,20 @@ int wc_GenerateSeed(OS_Seed* os, byte* output, word32 sz)
34723487
if (ret == 0)
34733488
return ret;
34743489
#ifdef FORCE_FAILURE_GETRANDOM
3475-
/* don't fallback to /dev/urandom */
3490+
/* don't fall back to /dev/urandom */
34763491
return ret;
34773492
#elif !defined(NO_FILESYSTEM)
3478-
/* reset error and fallback to using /dev/urandom if filesystem
3493+
/* reset error and fall back to using /dev/urandom if filesystem
34793494
* support is compiled in */
34803495
ret = 0;
34813496
#endif
34823497
}
34833498
#endif
34843499

3500+
#endif /* (!HAVE_INTEL_RDSEED && !HAVE_AMD_RDSEED) || !FORCE_FAILURE_RDSEED */
3501+
3502+
#endif /*!HAVE_ENTROPY_MEMUSE || !ENTROPY_MEMUSE_FORCE_FAILURE */
3503+
34853504
#ifndef NO_FILESYSTEM
34863505
#ifndef NO_DEV_URANDOM /* way to disable use of /dev/urandom */
34873506
os->fd = open("/dev/urandom", O_RDONLY);

0 commit comments

Comments
 (0)