add sanity check for null buffer after malloc in test case

This commit is contained in:
JacobBarthelmeh
2024-03-04 07:33:21 -07:00
parent 065bfb0172
commit 2708062d39

View File

@@ -28034,50 +28034,54 @@ static int test_wc_PKCS7_VerifySignedData_RSA(void)
signedBundle = XBADFILE; signedBundle = XBADFILE;
} }
ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); if (buf != NULL) {
ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0); ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId));
for (i = 0; i < signedBundleSz;) { ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0);
int sz = (i + chunkSz > signedBundleSz)? signedBundleSz - i : for (i = 0; i < signedBundleSz;) {
chunkSz; int sz = (i + chunkSz > signedBundleSz)? signedBundleSz - i :
rc = wc_PKCS7_VerifySignedData(pkcs7, buf + i, sz); chunkSz;
if (rc < 0 ) { rc = wc_PKCS7_VerifySignedData(pkcs7, buf + i, sz);
if (rc == WC_PKCS7_WANT_READ_E) { if (rc < 0 ) {
i += sz; if (rc == WC_PKCS7_WANT_READ_E) {
continue; i += sz;
continue;
}
break;
}
else {
break;
} }
break;
}
else {
break;
} }
ExpectIntEQ(rc, PKCS7_SIGNEEDS_CHECK);
wc_PKCS7_Free(pkcs7);
pkcs7 = NULL;
} }
ExpectIntEQ(rc, PKCS7_SIGNEEDS_CHECK);
wc_PKCS7_Free(pkcs7);
pkcs7 = NULL;
/* now try with malformed bundle */ /* now try with malformed bundle */
ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); if (buf != NULL) {
ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0); ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId));
buf[signedBundleSz - 2] = buf[signedBundleSz - 2] + 1; ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0);
for (i = 0; i < signedBundleSz;) { buf[signedBundleSz - 2] = buf[signedBundleSz - 2] + 1;
int sz = (i + chunkSz > signedBundleSz)? signedBundleSz - i : for (i = 0; i < signedBundleSz;) {
chunkSz; int sz = (i + chunkSz > signedBundleSz)? signedBundleSz - i :
rc = wc_PKCS7_VerifySignedData(pkcs7, buf + i, sz); chunkSz;
if (rc < 0 ) { rc = wc_PKCS7_VerifySignedData(pkcs7, buf + i, sz);
if (rc == WC_PKCS7_WANT_READ_E) { if (rc < 0 ) {
i += sz; if (rc == WC_PKCS7_WANT_READ_E) {
continue; i += sz;
continue;
}
break;
}
else {
break;
} }
break;
}
else {
break;
} }
ExpectIntEQ(rc, ASN_PARSE_E);
wc_PKCS7_Free(pkcs7);
pkcs7 = NULL;
} }
ExpectIntEQ(rc, ASN_PARSE_E);
wc_PKCS7_Free(pkcs7);
pkcs7 = NULL;
if (buf != NULL) if (buf != NULL)
XFREE(buf, HEAP_HINT, DYNAMIC_TYPE_FILE); XFREE(buf, HEAP_HINT, DYNAMIC_TYPE_FILE);
} }