forked from wolfSSL/wolfssl
PKCS7: Check size in wc_PKCS7_InitWithCert before XMEMCPY to avoid overflow.
This commit is contained in:
@@ -1100,6 +1100,16 @@ int wc_PKCS7_InitWithCert(PKCS7* pkcs7, byte* derCert, word32 derCertSz)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (dCert->pubKeySize > (MAX_RSA_INT_SZ + MAX_RSA_E_SZ) ||
|
||||||
|
dCert->serialSz > MAX_SN_SZ) {
|
||||||
|
WOLFSSL_MSG("Invalid size in certificate\n");
|
||||||
|
FreeDecodedCert(dCert);
|
||||||
|
#ifdef WOLFSSL_SMALL_STACK
|
||||||
|
XFREE(dCert, pkcs7->heap, DYNAMIC_TYPE_DCERT);
|
||||||
|
#endif
|
||||||
|
return ASN_PARSE_E;
|
||||||
|
}
|
||||||
|
|
||||||
XMEMCPY(pkcs7->publicKey, dCert->publicKey, dCert->pubKeySize);
|
XMEMCPY(pkcs7->publicKey, dCert->publicKey, dCert->pubKeySize);
|
||||||
pkcs7->publicKeySz = dCert->pubKeySize;
|
pkcs7->publicKeySz = dCert->pubKeySize;
|
||||||
pkcs7->publicKeyOID = dCert->keyOID;
|
pkcs7->publicKeyOID = dCert->keyOID;
|
||||||
|
Reference in New Issue
Block a user