forked from wolfSSL/wolfssl
add sanity check for null buffer after malloc in test case
This commit is contained in:
76
tests/api.c
76
tests/api.c
@@ -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);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user