set internal x509 elements to NULL after free

This commit is contained in:
Jacob Barthelmeh
2019-07-08 15:11:03 -06:00
parent b5a5100068
commit efe276414b

View File

@@ -2954,8 +2954,10 @@ void InitX509Name(WOLFSSL_X509_NAME* name, int dynamicFlag)
void FreeX509Name(WOLFSSL_X509_NAME* name, void* heap) void FreeX509Name(WOLFSSL_X509_NAME* name, void* heap)
{ {
if (name != NULL) { if (name != NULL) {
if (name->dynamicName) if (name->dynamicName) {
XFREE(name->name, heap, DYNAMIC_TYPE_SUBJECT_CN); XFREE(name->name, heap, DYNAMIC_TYPE_SUBJECT_CN);
name->name = NULL;
}
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) #if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
{ {
int i; int i;
@@ -3002,22 +3004,31 @@ void FreeX509(WOLFSSL_X509* x509)
FreeX509Name(&x509->issuer, x509->heap); FreeX509Name(&x509->issuer, x509->heap);
FreeX509Name(&x509->subject, x509->heap); FreeX509Name(&x509->subject, x509->heap);
if (x509->pubKey.buffer) if (x509->pubKey.buffer) {
XFREE(x509->pubKey.buffer, x509->heap, DYNAMIC_TYPE_PUBLIC_KEY); XFREE(x509->pubKey.buffer, x509->heap, DYNAMIC_TYPE_PUBLIC_KEY);
x509->pubKey.buffer = NULL;
}
FreeDer(&x509->derCert); FreeDer(&x509->derCert);
XFREE(x509->sig.buffer, x509->heap, DYNAMIC_TYPE_SIGNATURE); XFREE(x509->sig.buffer, x509->heap, DYNAMIC_TYPE_SIGNATURE);
x509->sig.buffer = NULL;
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) #if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
XFREE(x509->authKeyId, x509->heap, DYNAMIC_TYPE_X509_EXT); XFREE(x509->authKeyId, x509->heap, DYNAMIC_TYPE_X509_EXT);
x509->authKeyId = NULL;
XFREE(x509->subjKeyId, x509->heap, DYNAMIC_TYPE_X509_EXT); XFREE(x509->subjKeyId, x509->heap, DYNAMIC_TYPE_X509_EXT);
x509->subjKeyId = NULL;
if (x509->authInfo != NULL) { if (x509->authInfo != NULL) {
XFREE(x509->authInfo, x509->heap, DYNAMIC_TYPE_X509_EXT); XFREE(x509->authInfo, x509->heap, DYNAMIC_TYPE_X509_EXT);
x509->authInfo = NULL;
} }
if (x509->extKeyUsageSrc != NULL) { if (x509->extKeyUsageSrc != NULL) {
XFREE(x509->extKeyUsageSrc, x509->heap, DYNAMIC_TYPE_X509_EXT); XFREE(x509->extKeyUsageSrc, x509->heap, DYNAMIC_TYPE_X509_EXT);
x509->extKeyUsageSrc= NULL;
} }
#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ #endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */
if (x509->altNames) if (x509->altNames) {
FreeAltNames(x509->altNames, x509->heap); FreeAltNames(x509->altNames, x509->heap);
x509->altNames = NULL;
}
} }