Skip to content

Commit 0c150d2

Browse files
Merge pull request #7150 from dgarske/getenv
Fix build with `NO_STDIO_FILESYSTEM` and improve checks for `XGETENV`
2 parents 12dafec + 7655046 commit 0c150d2

6 files changed

Lines changed: 31 additions & 18 deletions

File tree

src/crl.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -489,7 +489,8 @@ int CheckCertCRL_ex(WOLFSSL_CRL* crl, byte* issuerHash, byte* serial,
489489

490490
#if defined(OPENSSL_ALL) && defined(WOLFSSL_CERT_GEN) && \
491491
(defined(WOLFSSL_CERT_REQ) || defined(WOLFSSL_CERT_EXT)) && \
492-
!defined(NO_FILESYSTEM) && !defined(NO_WOLFSSL_DIR)
492+
!defined(NO_FILESYSTEM) && !defined(NO_WOLFSSL_DIR) && \
493+
!defined(NO_STDIO_FILESYSTEM)
493494
/* if not find entry in the CRL list, it looks at the folder that sets */
494495
/* by LOOKUP_ctrl because user would want to use hash_dir. */
495496
/* Loading <issuer-hash>.rN form CRL file if find at the folder, */

src/internal.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13577,7 +13577,8 @@ static void FreeProcPeerCertArgs(WOLFSSL* ssl, void* pArgs)
1357713577
}
1357813578
#if defined(OPENSSL_ALL) && defined(WOLFSSL_CERT_GEN) && \
1357913579
(defined(WOLFSSL_CERT_REQ) || defined(WOLFSSL_CERT_EXT)) && \
13580-
!defined(NO_FILESYSTEM) && !defined(NO_WOLFSSL_DIR)
13580+
!defined(NO_FILESYSTEM) && !defined(NO_WOLFSSL_DIR) && \
13581+
!defined(NO_STDIO_FILESYSTEM)
1358113582
/* load certificate file which has the form <hash>.(r)N[0..N] */
1358213583
/* in the folder. */
1358313584
/* (r), in the case of CRL file */
@@ -14487,7 +14488,8 @@ int ProcessPeerCerts(WOLFSSL* ssl, byte* input, word32* inOutIdx,
1448714488
&subjectHash, &alreadySigner);
1448814489
#if defined(OPENSSL_ALL) && defined(WOLFSSL_CERT_GEN) && \
1448914490
(defined(WOLFSSL_CERT_REQ) || defined(WOLFSSL_CERT_EXT)) && \
14490-
!defined(NO_FILESYSTEM) && !defined(NO_WOLFSSL_DIR)
14491+
!defined(NO_FILESYSTEM) && !defined(NO_WOLFSSL_DIR) && \
14492+
!defined(NO_STDIO_FILESYSTEM)
1449114493
if (ret == ASN_NO_SIGNER_E || ret == ASN_SELF_SIGNED_E) {
1449214494
WOLFSSL_MSG("try to load certificate if hash dir is set");
1449314495
ret = LoadCertByIssuer(SSL_STORE(ssl),
@@ -14773,7 +14775,8 @@ int ProcessPeerCerts(WOLFSSL* ssl, byte* input, word32* inOutIdx,
1477314775
&subjectHash, &alreadySigner);
1477414776
#if defined(OPENSSL_ALL) && defined(WOLFSSL_CERT_GEN) && \
1477514777
(defined(WOLFSSL_CERT_REQ) || defined(WOLFSSL_CERT_EXT)) && \
14776-
!defined(NO_FILESYSTEM) && !defined(NO_WOLFSSL_DIR)
14778+
!defined(NO_FILESYSTEM) && !defined(NO_WOLFSSL_DIR) && \
14779+
!defined(NO_STDIO_FILESYSTEM)
1477714780
if (ret == ASN_NO_SIGNER_E || ret == ASN_SELF_SIGNED_E) {
1477814781
int lastErr = ret; /* save error from last time */
1477914782
WOLFSSL_MSG("try to load certificate if hash dir is set");

src/ssl.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32883,7 +32883,7 @@ int wolfSSL_RAND_seed(const void* seed, int len)
3288332883
*/
3288432884
const char* wolfSSL_RAND_file_name(char* fname, unsigned long len)
3288532885
{
32886-
#ifndef NO_FILESYSTEM
32886+
#if !defined(NO_FILESYSTEM) && defined(XGETENV)
3288732887
char* rt;
3288832888

3288932889
WOLFSSL_ENTER("wolfSSL_RAND_file_name");
@@ -32893,7 +32893,7 @@ const char* wolfSSL_RAND_file_name(char* fname, unsigned long len)
3289332893
}
3289432894

3289532895
XMEMSET(fname, 0, len);
32896-
/* if access to stdlib.h */
32896+
3289732897
if ((rt = XGETENV("RANDFILE")) != NULL) {
3289832898
if (len > XSTRLEN(rt)) {
3289932899
XMEMCPY(fname, rt, XSTRLEN(rt));
@@ -32906,15 +32906,15 @@ const char* wolfSSL_RAND_file_name(char* fname, unsigned long len)
3290632906

3290732907
/* $RANDFILE was not set or is too large, check $HOME */
3290832908
if (rt == NULL) {
32909-
char ap[] = "/.rnd";
32909+
const char ap[] = "/.rnd";
3291032910

3291132911
WOLFSSL_MSG("Environment variable RANDFILE not set");
3291232912
if ((rt = XGETENV("HOME")) == NULL) {
3291332913
WOLFSSL_MSG("Environment variable HOME not set");
3291432914
return NULL;
3291532915
}
3291632916

32917-
if (len > XSTRLEN(rt) + XSTRLEN(ap)) {
32917+
if (len > XSTRLEN(rt) + XSTRLEN(ap)) {
3291832918
fname[0] = '\0';
3291932919
XSTRNCAT(fname, rt, len);
3292032920
XSTRNCAT(fname, ap, len - XSTRLEN(rt));
@@ -32928,9 +32928,9 @@ const char* wolfSSL_RAND_file_name(char* fname, unsigned long len)
3292832928

3292932929
return fname;
3293032930
#else
32931-
/* no filesystem defined */
3293232931
WOLFSSL_ENTER("wolfSSL_RAND_file_name");
32933-
WOLFSSL_MSG("No filesystem feature enabled, not compiled in");
32932+
WOLFSSL_MSG("RAND_file_name requires filesystem and getenv support, "
32933+
"not compiled in");
3293432934
(void)fname;
3293532935
(void)len;
3293632936
return NULL;
@@ -35390,7 +35390,7 @@ void wolfSSL_PKCS12_PBE_add(void)
3539035390
WOLFSSL_ENTER("wolfSSL_PKCS12_PBE_add");
3539135391
}
3539235392

35393-
#if !defined(NO_FILESYSTEM)
35393+
#if !defined(NO_FILESYSTEM) && !defined(NO_STDIO_FILESYSTEM)
3539435394
WOLFSSL_X509_PKCS12 *wolfSSL_d2i_PKCS12_fp(XFILE fp,
3539535395
WOLFSSL_X509_PKCS12 **pkcs12)
3539635396
{

src/ssl_bn.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2303,7 +2303,8 @@ int wolfSSL_BN_is_prime_ex(const WOLFSSL_BIGNUM *bn, int checks,
23032303
* Print APIs
23042304
******************************************************************************/
23052305

2306-
#if !defined(NO_FILESYSTEM) && defined(XFPRINTF)
2306+
#if !defined(NO_FILESYSTEM) && !defined(NO_STDIO_FILESYSTEM) && \
2307+
defined(XFPRINTF)
23072308
/* Print big number to file pointer.
23082309
*
23092310
* Return code compliant with OpenSSL.

src/x509.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7984,7 +7984,7 @@ WOLFSSL_API WOLFSSL_X509_CRL *wolfSSL_d2i_X509_CRL_bio(WOLFSSL_BIO *bp,
79847984
}
79857985
#endif
79867986

7987-
#ifndef NO_FILESYSTEM
7987+
#if !defined(NO_FILESYSTEM) && !defined(NO_STDIO_FILESYSTEM)
79887988
WOLFSSL_X509_CRL *wolfSSL_d2i_X509_CRL_fp(XFILE fp, WOLFSSL_X509_CRL **crl)
79897989
{
79907990
WOLFSSL_ENTER("wolfSSL_d2i_X509_CRL_fp");

tests/api.c

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11589,6 +11589,7 @@ static int test_wolfSSL_PKCS12(void)
1158911589
* Password Key
1159011590
*/
1159111591
#if defined(OPENSSL_EXTRA) && !defined(NO_DES3) && !defined(NO_FILESYSTEM) && \
11592+
!defined(NO_STDIO_FILESYSTEM) && \
1159211593
!defined(NO_ASN) && !defined(NO_PWDBASED) && !defined(NO_RSA) && \
1159311594
!defined(NO_SHA) && defined(HAVE_PKCS12) && !defined(NO_BIO)
1159411595
byte buf[6000];
@@ -37686,13 +37687,15 @@ static int test_wolfSSL_BN(void)
3768637687
ExpectIntLT(BN_cmp(a, c), 0);
3768737688
ExpectIntGT(BN_cmp(c, b), 0);
3768837689

37690+
#if !defined(NO_FILESYSTEM) && !defined(NO_STDIO_FILESYSTEM)
3768937691
ExpectIntEQ(BN_print_fp(XBADFILE, NULL), 0);
3769037692
ExpectIntEQ(BN_print_fp(XBADFILE, &emptyBN), 0);
3769137693
ExpectIntEQ(BN_print_fp(stderr, NULL), 0);
3769237694
ExpectIntEQ(BN_print_fp(stderr, &emptyBN), 0);
3769337695
ExpectIntEQ(BN_print_fp(XBADFILE, a), 0);
3769437696

3769537697
ExpectIntEQ(BN_print_fp(stderr, a), 1);
37698+
#endif
3769637699

3769737700
BN_clear(a);
3769837701

@@ -43332,7 +43335,8 @@ static int test_wolfSSL_OBJ(void)
4333243335
EXPECT_DECLS;
4333343336
#if defined(OPENSSL_EXTRA) && !defined(NO_SHA256) && !defined(NO_ASN) && \
4333443337
!defined(HAVE_FIPS) && !defined(NO_SHA) && defined(WOLFSSL_CERT_EXT) && \
43335-
defined(WOLFSSL_CERT_GEN) && !defined(NO_BIO)
43338+
defined(WOLFSSL_CERT_GEN) && !defined(NO_BIO) && \
43339+
!defined(NO_FILESYSTEM) && !defined(NO_STDIO_FILESYSTEM)
4333643340
ASN1_OBJECT *obj = NULL;
4333743341
ASN1_OBJECT *obj2 = NULL;
4333843342
char buf[50];
@@ -54728,7 +54732,7 @@ static int test_wolfSSL_X509_load_crl_file(void)
5472854732
{
5472954733
EXPECT_DECLS;
5473054734
#if defined(OPENSSL_EXTRA) && defined(HAVE_CRL) && !defined(NO_FILESYSTEM) && \
54731-
!defined(NO_RSA) && !defined(NO_BIO)
54735+
!defined(NO_STDIO_FILESYSTEM) && !defined(NO_RSA) && !defined(NO_BIO)
5473254736
int i;
5473354737
char pem[][100] = {
5473454738
"./certs/crl/crl.pem",
@@ -57130,6 +57134,7 @@ static int test_wolfSSL_RSA_print(void)
5713057134
{
5713157135
EXPECT_DECLS;
5713257136
#if defined(OPENSSL_EXTRA) && !defined(NO_FILESYSTEM) && \
57137+
!defined(NO_STDIO_FILESYSTEM) && \
5713357138
!defined(NO_RSA) && defined(WOLFSSL_KEY_GEN) && \
5713457139
!defined(NO_BIO) && defined(XFPRINTF)
5713557140
BIO *bio = NULL;
@@ -59850,23 +59855,26 @@ static int test_wolfSSL_EC_POINT(void)
5985059855
/* check bn2hex */
5985159856
hexStr = BN_bn2hex(k);
5985259857
ExpectStrEQ(hexStr, kTest);
59853-
#if !defined(NO_FILESYSTEM) && defined(XFPRINTF)
59858+
#if !defined(NO_FILESYSTEM) && !defined(NO_STDIO_FILESYSTEM) && \
59859+
defined(XFPRINTF)
5985459860
BN_print_fp(stderr, k);
5985559861
fprintf(stderr, "\n");
5985659862
#endif
5985759863
XFREE(hexStr, NULL, DYNAMIC_TYPE_ECC);
5985859864

5985959865
hexStr = BN_bn2hex(Gx);
5986059866
ExpectStrEQ(hexStr, kGx);
59861-
#if !defined(NO_FILESYSTEM) && defined(XFPRINTF)
59867+
#if !defined(NO_FILESYSTEM) && !defined(NO_STDIO_FILESYSTEM) && \
59868+
defined(XFPRINTF)
5986259869
BN_print_fp(stderr, Gx);
5986359870
fprintf(stderr, "\n");
5986459871
#endif
5986559872
XFREE(hexStr, NULL, DYNAMIC_TYPE_ECC);
5986659873

5986759874
hexStr = BN_bn2hex(Gy);
5986859875
ExpectStrEQ(hexStr, kGy);
59869-
#if !defined(NO_FILESYSTEM) && defined(XFPRINTF)
59876+
#if !defined(NO_FILESYSTEM) && !defined(NO_STDIO_FILESYSTEM) && \
59877+
defined(XFPRINTF)
5987059878
BN_print_fp(stderr, Gy);
5987159879
fprintf(stderr, "\n");
5987259880
#endif

0 commit comments

Comments
 (0)