address peer review on PR #5449.

This commit is contained in:
Daniel Pouzzner
2022-08-10 13:32:56 -05:00
parent f771181e1a
commit 8197f958a9
6 changed files with 63 additions and 54 deletions

View File

@@ -25908,7 +25908,7 @@ static int HashSkeData(WOLFSSL* ssl, enum wc_HashType hashType,
* parse DN name */ * parse DN name */
#ifdef WOLFSSL_SMALL_STACK #ifdef WOLFSSL_SMALL_STACK
DecodedCert *cert = (DecodedCert *)XMALLOC( DecodedCert *cert = (DecodedCert *)XMALLOC(
sizeof(*cert), ssl->heap, DYNAMIC_TYPE_TMP_BUFFER); sizeof(*cert), ssl->heap, DYNAMIC_TYPE_DCERT);
if (cert == NULL) if (cert == NULL)
return MEMORY_ERROR; return MEMORY_ERROR;
#else #else
@@ -25917,28 +25917,29 @@ static int HashSkeData(WOLFSSL* ssl, enum wc_HashType hashType,
InitDecodedCert(cert, input + *inOutIdx, dnSz, ssl->heap); InitDecodedCert(cert, input + *inOutIdx, dnSz, ssl->heap);
do { ret = GetName(cert, SUBJECT, dnSz);
if ((ret = GetName(cert, SUBJECT, dnSz)) != 0) {
break;
}
if ((name = wolfSSL_X509_NAME_new()) == NULL) { if (ret == 0) {
if ((name = wolfSSL_X509_NAME_new()) == NULL)
ret = MEMORY_ERROR; ret = MEMORY_ERROR;
break; }
}
if (ret == 0) {
CopyDecodedName(name, cert, SUBJECT); CopyDecodedName(name, cert, SUBJECT);
}
if (ret == 0) {
if (wolfSSL_sk_X509_NAME_push(ssl->ca_names, name) if (wolfSSL_sk_X509_NAME_push(ssl->ca_names, name)
== WOLFSSL_FAILURE) == WOLFSSL_FAILURE)
{ {
ret = MEMORY_ERROR; ret = MEMORY_ERROR;
break;
} }
} while (0); }
FreeDecodedCert(cert); FreeDecodedCert(cert);
#ifdef WOLFSSL_SMALL_STACK #ifdef WOLFSSL_SMALL_STACK
XFREE(cert, ssl->heap, DYNAMIC_TYPE_TMP_BUFFER); XFREE(cert, ssl->heap, DYNAMIC_TYPE_DCERT);
#endif #endif
if (ret != 0) { if (ret != 0) {
if (name != NULL) if (name != NULL)

View File

@@ -599,10 +599,7 @@ WOLFSSL_OCSP_CERTID* wolfSSL_OCSP_cert_to_id(
int ret = -1; int ret = -1;
DerBuffer* derCert = NULL; DerBuffer* derCert = NULL;
#ifdef WOLFSSL_SMALL_STACK #ifdef WOLFSSL_SMALL_STACK
DecodedCert *cert = (DecodedCert *)XMALLOC(sizeof(*cert), NULL, DecodedCert *cert = NULL;
DYNAMIC_TYPE_TMP_BUFFER);
if (cert == NULL)
return NULL;
#else #else
DecodedCert cert[1]; DecodedCert cert[1];
#endif #endif
@@ -615,6 +612,12 @@ WOLFSSL_OCSP_CERTID* wolfSSL_OCSP_cert_to_id(
|| issuer == NULL || issuer->derCert == NULL) || issuer == NULL || issuer->derCert == NULL)
goto out; goto out;
#ifdef WOLFSSL_SMALL_STACK
cert = (DecodedCert *)XMALLOC(sizeof(*cert), cm->heap, DYNAMIC_TYPE_DCERT);
if (cert == NULL)
goto out;
#endif
ret = AllocDer(&derCert, issuer->derCert->length, ret = AllocDer(&derCert, issuer->derCert->length,
issuer->derCert->type, NULL); issuer->derCert->type, NULL);
if (ret == 0) { if (ret == 0) {
@@ -625,16 +628,17 @@ WOLFSSL_OCSP_CERTID* wolfSSL_OCSP_cert_to_id(
if (ret != WOLFSSL_SUCCESS) { if (ret != WOLFSSL_SUCCESS) {
goto out; goto out;
} }
derCert = NULL;
} }
ret = -1; ret = -1;
certId = (WOLFSSL_OCSP_CERTID*)XMALLOC(sizeof(WOLFSSL_OCSP_CERTID), NULL, certId = (WOLFSSL_OCSP_CERTID*)XMALLOC(sizeof(WOLFSSL_OCSP_CERTID),
DYNAMIC_TYPE_OPENSSL); cm->heap, DYNAMIC_TYPE_OPENSSL);
if (certId == NULL) if (certId == NULL)
goto out; goto out;
certStatus = (CertStatus*)XMALLOC(sizeof(CertStatus), NULL, certStatus = (CertStatus*)XMALLOC(sizeof(CertStatus), cm->heap,
DYNAMIC_TYPE_OPENSSL); DYNAMIC_TYPE_OPENSSL);
if (certStatus == NULL) if (certStatus == NULL)
goto out; goto out;
@@ -662,21 +666,25 @@ WOLFSSL_OCSP_CERTID* wolfSSL_OCSP_cert_to_id(
out: out:
if (ret != 0) {
if (derCert != NULL)
FreeDer(&derCert);
if (certId != NULL)
XFREE(certId, cm->heap, DYNAMIC_TYPE_OPENSSL);
if (certStatus)
XFREE(certStatus, cm->heap, DYNAMIC_TYPE_OPENSSL);
return NULL;
}
#ifdef WOLFSSL_SMALL_STACK
if (cert != NULL)
XFREE(cert, cm->heap, DYNAMIC_TYPE_DCERT);
#endif
if (cm != NULL) if (cm != NULL)
wolfSSL_CertManagerFree(cm); wolfSSL_CertManagerFree(cm);
#ifdef WOLFSSL_SMALL_STACK return certId;
XFREE(cert, NULL, DYNAMIC_TYPE_TMP_BUFFER);
#endif
if (ret != 0) {
if (certId != NULL)
XFREE(certId, NULL, DYNAMIC_TYPE_OPENSSL);
if (certStatus)
XFREE(certStatus, NULL, DYNAMIC_TYPE_OPENSSL);
return NULL;
} else
return certId;
} }
void wolfSSL_OCSP_BASICRESP_free(WOLFSSL_OCSP_BASICRESP* basicResponse) void wolfSSL_OCSP_BASICRESP_free(WOLFSSL_OCSP_BASICRESP* basicResponse)
@@ -691,8 +699,9 @@ int wolfSSL_OCSP_basic_verify(WOLFSSL_OCSP_BASICRESP *bs,
{ {
int ret; int ret;
#ifdef WOLFSSL_SMALL_STACK #ifdef WOLFSSL_SMALL_STACK
DecodedCert *cert = (DecodedCert *)XMALLOC(sizeof(*cert), NULL, DecodedCert *cert = (DecodedCert *)
DYNAMIC_TYPE_TMP_BUFFER); XMALLOC(sizeof(*cert), (st && st->cm) ? st->cm->heap : NULL,
DYNAMIC_TYPE_DCERT);
if (cert == NULL) if (cert == NULL)
return WOLFSSL_FAILURE; return WOLFSSL_FAILURE;
#else #else
@@ -722,7 +731,7 @@ int wolfSSL_OCSP_basic_verify(WOLFSSL_OCSP_BASICRESP *bs,
out: out:
#ifdef WOLFSSL_SMALL_STACK #ifdef WOLFSSL_SMALL_STACK
XFREE(cert, NULL, DYNAMIC_TYPE_TMP_BUFFER); XFREE(cert, (st && st->cm) ? st->cm->heap : NULL, DYNAMIC_TYPE_DCERT);
#endif #endif
return ret; return ret;

View File

@@ -6501,7 +6501,7 @@ int wolfSSL_DH_size(WOLFSSL_DH* dh)
*/ */
WOLFSSL_BIGNUM* wolfSSL_DH_768_prime(WOLFSSL_BIGNUM* bn) WOLFSSL_BIGNUM* wolfSSL_DH_768_prime(WOLFSSL_BIGNUM* bn)
{ {
const char prm[] = { static const char prm[] = {
"FFFFFFFFFFFFFFFFC90FDAA22168C234" "FFFFFFFFFFFFFFFFC90FDAA22168C234"
"C4C6628B80DC1CD129024E088A67CC74" "C4C6628B80DC1CD129024E088A67CC74"
"020BBEA63B139B22514A08798E3404DD" "020BBEA63B139B22514A08798E3404DD"
@@ -6529,7 +6529,7 @@ WOLFSSL_BIGNUM* wolfSSL_DH_768_prime(WOLFSSL_BIGNUM* bn)
*/ */
WOLFSSL_BIGNUM* wolfSSL_DH_1024_prime(WOLFSSL_BIGNUM* bn) WOLFSSL_BIGNUM* wolfSSL_DH_1024_prime(WOLFSSL_BIGNUM* bn)
{ {
const char prm[] = { static const char prm[] = {
"FFFFFFFFFFFFFFFFC90FDAA22168C234" "FFFFFFFFFFFFFFFFC90FDAA22168C234"
"C4C6628B80DC1CD129024E088A67CC74" "C4C6628B80DC1CD129024E088A67CC74"
"020BBEA63B139B22514A08798E3404DD" "020BBEA63B139B22514A08798E3404DD"
@@ -6559,7 +6559,7 @@ WOLFSSL_BIGNUM* wolfSSL_DH_1024_prime(WOLFSSL_BIGNUM* bn)
*/ */
WOLFSSL_BIGNUM* wolfSSL_DH_1536_prime(WOLFSSL_BIGNUM* bn) WOLFSSL_BIGNUM* wolfSSL_DH_1536_prime(WOLFSSL_BIGNUM* bn)
{ {
const char prm[] = { static const char prm[] = {
"FFFFFFFFFFFFFFFFC90FDAA22168C234" "FFFFFFFFFFFFFFFFC90FDAA22168C234"
"C4C6628B80DC1CD129024E088A67CC74" "C4C6628B80DC1CD129024E088A67CC74"
"020BBEA63B139B22514A08798E3404DD" "020BBEA63B139B22514A08798E3404DD"
@@ -6593,7 +6593,7 @@ WOLFSSL_BIGNUM* wolfSSL_DH_1536_prime(WOLFSSL_BIGNUM* bn)
*/ */
WOLFSSL_BIGNUM* wolfSSL_DH_2048_prime(WOLFSSL_BIGNUM* bn) WOLFSSL_BIGNUM* wolfSSL_DH_2048_prime(WOLFSSL_BIGNUM* bn)
{ {
const char prm[] = { static const char prm[] = {
"FFFFFFFFFFFFFFFFC90FDAA22168C234" "FFFFFFFFFFFFFFFFC90FDAA22168C234"
"C4C6628B80DC1CD129024E088A67CC74" "C4C6628B80DC1CD129024E088A67CC74"
"020BBEA63B139B22514A08798E3404DD" "020BBEA63B139B22514A08798E3404DD"
@@ -6631,7 +6631,7 @@ WOLFSSL_BIGNUM* wolfSSL_DH_2048_prime(WOLFSSL_BIGNUM* bn)
*/ */
WOLFSSL_BIGNUM* wolfSSL_DH_3072_prime(WOLFSSL_BIGNUM* bn) WOLFSSL_BIGNUM* wolfSSL_DH_3072_prime(WOLFSSL_BIGNUM* bn)
{ {
const char prm[] = { static const char prm[] = {
"FFFFFFFFFFFFFFFFC90FDAA22168C234" "FFFFFFFFFFFFFFFFC90FDAA22168C234"
"C4C6628B80DC1CD129024E088A67CC74" "C4C6628B80DC1CD129024E088A67CC74"
"020BBEA63B139B22514A08798E3404DD" "020BBEA63B139B22514A08798E3404DD"
@@ -6677,7 +6677,7 @@ WOLFSSL_BIGNUM* wolfSSL_DH_3072_prime(WOLFSSL_BIGNUM* bn)
*/ */
WOLFSSL_BIGNUM* wolfSSL_DH_4096_prime(WOLFSSL_BIGNUM* bn) WOLFSSL_BIGNUM* wolfSSL_DH_4096_prime(WOLFSSL_BIGNUM* bn)
{ {
const char prm[] = { static const char prm[] = {
"FFFFFFFFFFFFFFFFC90FDAA22168C234" "FFFFFFFFFFFFFFFFC90FDAA22168C234"
"C4C6628B80DC1CD129024E088A67CC74" "C4C6628B80DC1CD129024E088A67CC74"
"020BBEA63B139B22514A08798E3404DD" "020BBEA63B139B22514A08798E3404DD"
@@ -6731,7 +6731,7 @@ WOLFSSL_BIGNUM* wolfSSL_DH_4096_prime(WOLFSSL_BIGNUM* bn)
*/ */
WOLFSSL_BIGNUM* wolfSSL_DH_6144_prime(WOLFSSL_BIGNUM* bn) WOLFSSL_BIGNUM* wolfSSL_DH_6144_prime(WOLFSSL_BIGNUM* bn)
{ {
const char prm[] = { static const char prm[] = {
"FFFFFFFFFFFFFFFFC90FDAA22168C234" "FFFFFFFFFFFFFFFFC90FDAA22168C234"
"C4C6628B80DC1CD129024E088A67CC74" "C4C6628B80DC1CD129024E088A67CC74"
"020BBEA63B139B22514A08798E3404DD" "020BBEA63B139B22514A08798E3404DD"

View File

@@ -40527,7 +40527,7 @@ int wolfSSL_PKCS12_parse(WC_PKCS12* pkcs12, const char* psw,
#ifdef WOLFSSL_SMALL_STACK #ifdef WOLFSSL_SMALL_STACK
DeCert = (DecodedCert *)XMALLOC(sizeof(*DeCert), heap, DeCert = (DecodedCert *)XMALLOC(sizeof(*DeCert), heap,
DYNAMIC_TYPE_TMP_BUFFER); DYNAMIC_TYPE_DCERT);
if (DeCert == NULL) { if (DeCert == NULL) {
WOLFSSL_MSG("out of memory"); WOLFSSL_MSG("out of memory");
return WOLFSSL_FAILURE; return WOLFSSL_FAILURE;
@@ -40726,7 +40726,7 @@ int wolfSSL_PKCS12_parse(WC_PKCS12* pkcs12, const char* psw,
out: out:
#ifdef WOLFSSL_SMALL_STACK #ifdef WOLFSSL_SMALL_STACK
XFREE(DeCert, heap, DYNAMIC_TYPE_TMP_BUFFER); XFREE(DeCert, heap, DYNAMIC_TYPE_DCERT);
#endif #endif
return ret; return ret;

View File

@@ -115,7 +115,7 @@ unsigned int wolfSSL_X509_get_extended_key_usage(WOLFSSL_X509* x509)
/* Returns the number of X509V3 extensions in X509 object, or 0 on failure */ /* Returns the number of X509V3 extensions in X509 object, or 0 on failure */
int wolfSSL_X509_get_ext_count(const WOLFSSL_X509* passedCert) int wolfSSL_X509_get_ext_count(const WOLFSSL_X509* passedCert)
{ {
int extCount = WOLFSSL_FAILURE; int extCount = 0;
int length = 0; int length = 0;
int outSz = 0; int outSz = 0;
const byte* rawCert; const byte* rawCert;
@@ -141,7 +141,7 @@ int wolfSSL_X509_get_ext_count(const WOLFSSL_X509* passedCert)
} }
#ifdef WOLFSSL_SMALL_STACK #ifdef WOLFSSL_SMALL_STACK
cert = (DecodedCert *)XMALLOC(sizeof(*cert), NULL, DYNAMIC_TYPE_TMP_BUFFER); cert = (DecodedCert *)XMALLOC(sizeof(*cert), NULL, DYNAMIC_TYPE_DCERT);
if (cert == NULL) { if (cert == NULL) {
WOLFSSL_MSG("out of memory"); WOLFSSL_MSG("out of memory");
return WOLFSSL_FAILURE; return WOLFSSL_FAILURE;
@@ -188,7 +188,6 @@ int wolfSSL_X509_get_ext_count(const WOLFSSL_X509* passedCert)
goto out; goto out;
} }
extCount = 0;
while (idx < (word32)sz) { while (idx < (word32)sz) {
if (GetSequence(input, &idx, &length, sz) < 0) { if (GetSequence(input, &idx, &length, sz) < 0) {
WOLFSSL_MSG("\tfail: should be a SEQUENCE"); WOLFSSL_MSG("\tfail: should be a SEQUENCE");
@@ -203,7 +202,7 @@ out:
FreeDecodedCert(cert); FreeDecodedCert(cert);
#ifdef WOLFSSL_SMALL_STACK #ifdef WOLFSSL_SMALL_STACK
XFREE(cert, NULL, DYNAMIC_TYPE_TMP_BUFFER); XFREE(cert, NULL, DYNAMIC_TYPE_DCERT);
#endif #endif
return extCount; return extCount;
} }
@@ -1752,7 +1751,7 @@ int wolfSSL_X509_get_ext_by_NID(const WOLFSSL_X509* x509, int nid, int lastPos)
#ifdef WOLFSSL_SMALL_STACK #ifdef WOLFSSL_SMALL_STACK
cert = (DecodedCert *)XMALLOC(sizeof(*cert), x509->heap, cert = (DecodedCert *)XMALLOC(sizeof(*cert), x509->heap,
DYNAMIC_TYPE_TMP_BUFFER); DYNAMIC_TYPE_DCERT);
if (cert == NULL) { if (cert == NULL) {
WOLFSSL_MSG("\tout of memory"); WOLFSSL_MSG("\tout of memory");
return WOLFSSL_FATAL_ERROR; return WOLFSSL_FATAL_ERROR;
@@ -1834,7 +1833,7 @@ out:
FreeDecodedCert(cert); FreeDecodedCert(cert);
#ifdef WOLFSSL_SMALL_STACK #ifdef WOLFSSL_SMALL_STACK
XFREE(cert, x509->heap, DYNAMIC_TYPE_TMP_BUFFER); XFREE(cert, x509->heap, DYNAMIC_TYPE_DCERT);
#endif #endif
return found ? extCount : WOLFSSL_FATAL_ERROR; return found ? extCount : WOLFSSL_FATAL_ERROR;
@@ -11861,7 +11860,7 @@ int wolfSSL_X509_check_host(WOLFSSL_X509 *x, const char *chk, size_t chklen,
#ifdef WOLFSSL_SMALL_STACK #ifdef WOLFSSL_SMALL_STACK
dCert = (DecodedCert *)XMALLOC(sizeof(*dCert), x->heap, dCert = (DecodedCert *)XMALLOC(sizeof(*dCert), x->heap,
DYNAMIC_TYPE_TMP_BUFFER); DYNAMIC_TYPE_DCERT);
if (dCert == NULL) { if (dCert == NULL) {
WOLFSSL_MSG("\tout of memory"); WOLFSSL_MSG("\tout of memory");
return WOLFSSL_FATAL_ERROR; return WOLFSSL_FATAL_ERROR;
@@ -11880,7 +11879,7 @@ out:
FreeDecodedCert(dCert); FreeDecodedCert(dCert);
#ifdef WOLFSSL_SMALL_STACK #ifdef WOLFSSL_SMALL_STACK
XFREE(dCert, x->heap, DYNAMIC_TYPE_TMP_BUFFER); XFREE(dCert, x->heap, DYNAMIC_TYPE_DCERT);
#endif #endif
if (ret != 0) if (ret != 0)
@@ -11914,7 +11913,7 @@ int wolfSSL_X509_check_ip_asc(WOLFSSL_X509 *x, const char *ipasc,
#ifdef WOLFSSL_SMALL_STACK #ifdef WOLFSSL_SMALL_STACK
if (ret == WOLFSSL_SUCCESS) { if (ret == WOLFSSL_SUCCESS) {
dCert = (DecodedCert *)XMALLOC(sizeof(*dCert), x->heap, dCert = (DecodedCert *)XMALLOC(sizeof(*dCert), x->heap,
DYNAMIC_TYPE_TMP_BUFFER); DYNAMIC_TYPE_DCERT);
if (dCert == NULL) { if (dCert == NULL) {
WOLFSSL_MSG("\tout of memory"); WOLFSSL_MSG("\tout of memory");
ret = WOLFSSL_FAILURE; ret = WOLFSSL_FAILURE;
@@ -11942,7 +11941,7 @@ int wolfSSL_X509_check_ip_asc(WOLFSSL_X509 *x, const char *ipasc,
#ifdef WOLFSSL_SMALL_STACK #ifdef WOLFSSL_SMALL_STACK
if (dCert != NULL) if (dCert != NULL)
XFREE(dCert, x->heap, DYNAMIC_TYPE_TMP_BUFFER); XFREE(dCert, x->heap, DYNAMIC_TYPE_DCERT);
#endif #endif
return ret; return ret;

View File

@@ -951,7 +951,7 @@ static int QuicConversation_step(QuicConversation *conv)
conv->started = 1; conv->started = 1;
} }
if (conv->server->output.len > 0) { if (conv->server->output.len > 0) {
QuicTestContext_forward(conv->server, conv->client, conv->rec_log, sizeof conv->rec_log); QuicTestContext_forward(conv->server, conv->client, conv->rec_log, sizeof(conv->rec_log));
n = wolfSSL_quic_read_write(conv->client->ssl); n = wolfSSL_quic_read_write(conv->client->ssl);
if (n != WOLFSSL_SUCCESS) { if (n != WOLFSSL_SUCCESS) {
AssertIntEQ(wolfSSL_get_error(conv->client->ssl, 0), SSL_ERROR_WANT_READ); AssertIntEQ(wolfSSL_get_error(conv->client->ssl, 0), SSL_ERROR_WANT_READ);
@@ -959,7 +959,7 @@ static int QuicConversation_step(QuicConversation *conv)
return 1; return 1;
} }
else if (conv->client->output.len > 0) { else if (conv->client->output.len > 0) {
QuicTestContext_forward(conv->client, conv->server, conv->rec_log, sizeof conv->rec_log); QuicTestContext_forward(conv->client, conv->server, conv->rec_log, sizeof(conv->rec_log));
#ifdef WOLFSSL_EARLY_DATA #ifdef WOLFSSL_EARLY_DATA
if (conv->accept_early_data) { if (conv->accept_early_data) {
int written; int written;