Skip to content

Commit 2708062

Browse files
add sanity check for null buffer after malloc in test case
1 parent 065bfb0 commit 2708062

1 file changed

Lines changed: 40 additions & 36 deletions

File tree

tests/api.c

Lines changed: 40 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -28034,50 +28034,54 @@ static int test_wc_PKCS7_VerifySignedData_RSA(void)
2803428034
signedBundle = XBADFILE;
2803528035
}
2803628036

28037-
ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId));
28038-
ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0);
28039-
for (i = 0; i < signedBundleSz;) {
28040-
int sz = (i + chunkSz > signedBundleSz)? signedBundleSz - i :
28041-
chunkSz;
28042-
rc = wc_PKCS7_VerifySignedData(pkcs7, buf + i, sz);
28043-
if (rc < 0 ) {
28044-
if (rc == WC_PKCS7_WANT_READ_E) {
28045-
i += sz;
28046-
continue;
28037+
if (buf != NULL) {
28038+
ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId));
28039+
ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0);
28040+
for (i = 0; i < signedBundleSz;) {
28041+
int sz = (i + chunkSz > signedBundleSz)? signedBundleSz - i :
28042+
chunkSz;
28043+
rc = wc_PKCS7_VerifySignedData(pkcs7, buf + i, sz);
28044+
if (rc < 0 ) {
28045+
if (rc == WC_PKCS7_WANT_READ_E) {
28046+
i += sz;
28047+
continue;
28048+
}
28049+
break;
28050+
}
28051+
else {
28052+
break;
2804728053
}
28048-
break;
28049-
}
28050-
else {
28051-
break;
2805228054
}
28055+
ExpectIntEQ(rc, PKCS7_SIGNEEDS_CHECK);
28056+
wc_PKCS7_Free(pkcs7);
28057+
pkcs7 = NULL;
2805328058
}
28054-
ExpectIntEQ(rc, PKCS7_SIGNEEDS_CHECK);
28055-
wc_PKCS7_Free(pkcs7);
28056-
pkcs7 = NULL;
28057-
2805828059

2805928060
/* now try with malformed bundle */
28060-
ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId));
28061-
ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0);
28062-
buf[signedBundleSz - 2] = buf[signedBundleSz - 2] + 1;
28063-
for (i = 0; i < signedBundleSz;) {
28064-
int sz = (i + chunkSz > signedBundleSz)? signedBundleSz - i :
28065-
chunkSz;
28066-
rc = wc_PKCS7_VerifySignedData(pkcs7, buf + i, sz);
28067-
if (rc < 0 ) {
28068-
if (rc == WC_PKCS7_WANT_READ_E) {
28069-
i += sz;
28070-
continue;
28061+
if (buf != NULL) {
28062+
ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId));
28063+
ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0);
28064+
buf[signedBundleSz - 2] = buf[signedBundleSz - 2] + 1;
28065+
for (i = 0; i < signedBundleSz;) {
28066+
int sz = (i + chunkSz > signedBundleSz)? signedBundleSz - i :
28067+
chunkSz;
28068+
rc = wc_PKCS7_VerifySignedData(pkcs7, buf + i, sz);
28069+
if (rc < 0 ) {
28070+
if (rc == WC_PKCS7_WANT_READ_E) {
28071+
i += sz;
28072+
continue;
28073+
}
28074+
break;
28075+
}
28076+
else {
28077+
break;
2807128078
}
28072-
break;
28073-
}
28074-
else {
28075-
break;
2807628079
}
28080+
ExpectIntEQ(rc, ASN_PARSE_E);
28081+
wc_PKCS7_Free(pkcs7);
28082+
pkcs7 = NULL;
2807728083
}
28078-
ExpectIntEQ(rc, ASN_PARSE_E);
28079-
wc_PKCS7_Free(pkcs7);
28080-
pkcs7 = NULL;
28084+
2808128085
if (buf != NULL)
2808228086
XFREE(buf, HEAP_HINT, DYNAMIC_TYPE_FILE);
2808328087
}

0 commit comments

Comments
 (0)