Skip to content

Commit b7e7e75

Browse files
authored
Merge pull request #10095 from douzzer/20260327-sanitizer-and-fixes-and-tls12_kdf_test-gating
20260327-sanitizer-and-tls12_kdf_test-gating-fixes
2 parents 5b1d2d7 + 76a498f commit b7e7e75

6 files changed

Lines changed: 36 additions & 27 deletions

File tree

src/conf.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ WOLFSSL_TXT_DB *wolfSSL_TXT_DB_read(WOLFSSL_BIO *in, int num)
9898
if (*idx == '#')
9999
continue;
100100
*lineEnd = '\0';
101-
strBuf = (char*)XMALLOC(fieldsSz + lineEnd - idx + 1, NULL,
101+
strBuf = (char*)XMALLOC(fieldsSz + (lineEnd - idx) + 1, NULL,
102102
DYNAMIC_TYPE_OPENSSL);
103103
if (!strBuf) {
104104
WOLFSSL_MSG("malloc error");

src/ssl.c

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11746,17 +11746,23 @@ int wolfSSL_OCSP_parse_url(const char* url, char** host, char** port,
1174611746
if (upath != NULL && uport >= upath)
1174711747
goto err;
1174811748
XFREE(*port, NULL, DYNAMIC_TYPE_OPENSSL);
11749-
*port = CopyString(uport, upath != NULL ? (int)(upath - uport) : -1,
11750-
NULL, DYNAMIC_TYPE_OPENSSL);
11749+
if (upath)
11750+
*port = CopyString(uport, (int)(upath - uport), NULL,
11751+
DYNAMIC_TYPE_OPENSSL);
11752+
else
11753+
*port = CopyString(uport, -1, NULL, DYNAMIC_TYPE_OPENSSL);
1175111754
if (*port == NULL)
1175211755
goto err;
1175311756
hostEnd = uport - 1;
1175411757
}
1175511758
else
1175611759
hostEnd = upath;
1175711760

11758-
*host = CopyString(u, hostEnd != NULL ? (int)(hostEnd - u) : -1, NULL,
11759-
DYNAMIC_TYPE_OPENSSL);
11761+
if (hostEnd)
11762+
*host = CopyString(u, (int)(hostEnd - u), NULL, DYNAMIC_TYPE_OPENSSL);
11763+
else
11764+
*host = CopyString(u, -1, NULL, DYNAMIC_TYPE_OPENSSL);
11765+
1176011766
if (*host == NULL)
1176111767
goto err;
1176211768

wolfcrypt/src/asn.c

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21339,11 +21339,9 @@ static int CheckCertSignature_ex(const byte* cert, word32 certSz, void* heap,
2133921339
ret = BAD_FUNC_ARG;
2134021340
}
2134121341

21342-
ALLOC_ASNGETDATA(dataASN, x509CertASN_Length, ret, heap);
21342+
CALLOC_ASNGETDATA(dataASN, x509CertASN_Length, ret, heap);
2134321343

2134421344
if ((ret == 0) && (!req)) {
21345-
/* Clear dynamic data for certificate items. */
21346-
XMEMSET(dataASN, 0, sizeof(ASNGetData) * x509CertASN_Length);
2134721345
/* Set OID types expected for signature and public key. */
2134821346
GetASN_OID(&dataASN[X509CERTASN_IDX_TBS_ALGOID_OID], oidSigType);
2134921347
GetASN_OID(&dataASN[X509CERTASN_IDX_TBS_SPUBKEYINFO_ALGO_OID],
@@ -21406,8 +21404,6 @@ static int CheckCertSignature_ex(const byte* cert, word32 certSz, void* heap,
2140621404
#ifndef WOLFSSL_CERT_REQ
2140721405
ret = NOT_COMPILED_IN;
2140821406
#else
21409-
/* Clear dynamic data for certificate request items. */
21410-
XMEMSET(dataASN, 0, sizeof(ASNGetData) * certReqASN_Length);
2141121407
/* Set OID types expected for signature and public key. */
2141221408
GetASN_OID(&dataASN[CERTREQASN_IDX_INFO_SPUBKEYINFO_ALGOID_OID],
2141321409
oidKeyType);
@@ -21417,6 +21413,7 @@ static int CheckCertSignature_ex(const byte* cert, word32 certSz, void* heap,
2141721413
/* Parse certificate request. */
2141821414
ret = GetASN_Items(certReqASN, dataASN, certReqASN_Length, 1, cert,
2141921415
&idx, certSz);
21416+
2142021417
if (ret == 0) {
2142121418
/* Store the data for verification in the certificate. */
2142221419
tbs = GetASNItem_Addr(dataASN[CERTREQASN_IDX_INFO_SEQ], cert);
@@ -21427,11 +21424,14 @@ static int CheckCertSignature_ex(const byte* cert, word32 certSz, void* heap,
2142721424
dataASN[CERTREQASN_IDX_INFO_SUBJ_SEQ], cert);
2142821425
sigOID = dataASN[CERTREQASN_IDX_INFO_SIGALGO_OID].data.oid.sum;
2142921426
#ifdef WC_RSA_PSS
21430-
sigParams = GetASNItem_Addr(dataASN[X509CERTASN_IDX_SIGALGO_PARAMS],
21431-
cert);
21432-
sigParamsSz =
21433-
GetASNItem_Length(dataASN[X509CERTASN_IDX_SIGALGO_PARAMS],
21434-
cert);
21427+
if (GetASNItem_HaveData(dataASN[X509CERTASN_IDX_SIGALGO_PARAMS])) {
21428+
sigParams =
21429+
GetASNItem_Addr(dataASN[X509CERTASN_IDX_SIGALGO_PARAMS],
21430+
cert);
21431+
sigParamsSz =
21432+
GetASNItem_Length(dataASN[X509CERTASN_IDX_SIGALGO_PARAMS],
21433+
cert);
21434+
}
2143521435
#endif
2143621436
GetASN_GetConstRef(&dataASN[CERTREQASN_IDX_INFO_SIGNATURE], &sig,
2143721437
&sigSz);
@@ -34360,7 +34360,7 @@ int ParseCRL(RevokedCert* rcert, DecodedCRL* dcrl, const byte* buff, word32 sz,
3436034360
GetASNItem_DataIdx(dataASN[CRLASN_IDX_TBS_REVOKEDCERTS], buff),
3436134361
GetASNItem_EndIdx(dataASN[CRLASN_IDX_TBS_REVOKEDCERTS], buff));
3436234362
}
34363-
if (ret == 0) {
34363+
if ((ret == 0) && GetASNItem_HaveIdx(dataASN[CRLASN_IDX_TBS_EXT_SEQ])) {
3436434364
/* Parse the extensions - starting after SEQUENCE OF. */
3436534365
ret = ParseCRL_Extensions(dcrl, buff,
3436634366
GetASNItem_DataIdx(dataASN[CRLASN_IDX_TBS_EXT_SEQ], buff),

wolfssl/wolfcrypt/asn.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -651,6 +651,9 @@ WOLFSSL_LOCAL void SetASN_OID(ASNSetData *dataASN, int oid, int oidType);
651651
((dataASN).length + (word32)((dataASN).data.buffer.data - (in)) - \
652652
(dataASN).offset)
653653

654+
#define GetASNItem_HaveData(dataASN) \
655+
((dataASN).data.buffer.data != NULL)
656+
654657
/* Get the index of a BER item's data.
655658
*
656659
* @param [in] dataASN Dynamic ASN data item.
@@ -660,6 +663,9 @@ WOLFSSL_LOCAL void SetASN_OID(ASNSetData *dataASN, int oid, int oidType);
660663
#define GetASNItem_DataIdx(dataASN, in) \
661664
(word32)((dataASN).data.ref.data - (in))
662665

666+
#define GetASNItem_HaveIdx(dataASN) \
667+
((dataASN).data.ref.data != NULL)
668+
663669
/* Get the end index of a BER item - index of the start of the next item.
664670
*
665671
* @param [in] dataASN Dynamic ASN data item.

wolfssl/wolfcrypt/coding.h

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -76,15 +76,6 @@ WOLFSSL_API int Base64_Decode_nonCT(const byte* in, word32 inLen, byte* out,
7676
word32* outLen);
7777
#endif
7878

79-
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) || \
80-
defined(HAVE_WEBSERVER) || defined(HAVE_FIPS) || \
81-
defined(HAVE_ECC_CDH) || defined(HAVE_SELFTEST) || \
82-
defined(WOLFSSL_ENCRYPTED_KEYS)
83-
#ifndef WOLFSSL_BASE16
84-
#define WOLFSSL_BASE16
85-
#endif
86-
#endif
87-
8879
#ifdef WOLFSSL_BASE16
8980
#ifdef WOLFSSL_API_PREFIX_MAP
9081
#define Base16_Decode wc_Base16_Decode

wolfssl/wolfcrypt/settings.h

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4316,8 +4316,14 @@ extern void uITRON4_free(void *p) ;
43164316
#define WOLFSSL_BASE64_DECODE
43174317
#endif
43184318

4319-
#if defined(WOLFCRYPT_FIPS_CORE_DYNAMIC_HASH_VALUE) && !defined(WOLFSSL_BASE16)
4320-
#define WOLFSSL_BASE16
4319+
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) || \
4320+
defined(HAVE_WEBSERVER) || defined(HAVE_FIPS) || \
4321+
defined(HAVE_ECC_CDH) || defined(HAVE_SELFTEST) || \
4322+
defined(WOLFCRYPT_FIPS_CORE_DYNAMIC_HASH_VALUE) || \
4323+
defined(WOLFSSL_ENCRYPTED_KEYS)
4324+
#ifndef WOLFSSL_BASE16
4325+
#define WOLFSSL_BASE16
4326+
#endif
43214327
#endif
43224328

43234329
#if defined(FORTRESS) && !defined(HAVE_EX_DATA)

0 commit comments

Comments
 (0)