diff options
-rw-r--r-- | src/lib/libcrypto/asn1/tasn_dec.c | 5 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/asn1/tasn_dec.c | 5 |
2 files changed, 10 insertions, 0 deletions
diff --git a/src/lib/libcrypto/asn1/tasn_dec.c b/src/lib/libcrypto/asn1/tasn_dec.c index f19c457169..1ce40039b1 100644 --- a/src/lib/libcrypto/asn1/tasn_dec.c +++ b/src/lib/libcrypto/asn1/tasn_dec.c | |||
@@ -171,6 +171,11 @@ ASN1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len, | |||
171 | 171 | ||
172 | if (!pval) | 172 | if (!pval) |
173 | return 0; | 173 | return 0; |
174 | /* always start fresh */ | ||
175 | if (*pval) { | ||
176 | ASN1_item_ex_free(pval, it); | ||
177 | *pval = NULL; | ||
178 | } | ||
174 | if (aux && aux->asn1_cb) | 179 | if (aux && aux->asn1_cb) |
175 | asn1_cb = aux->asn1_cb; | 180 | asn1_cb = aux->asn1_cb; |
176 | else | 181 | else |
diff --git a/src/lib/libssl/src/crypto/asn1/tasn_dec.c b/src/lib/libssl/src/crypto/asn1/tasn_dec.c index f19c457169..1ce40039b1 100644 --- a/src/lib/libssl/src/crypto/asn1/tasn_dec.c +++ b/src/lib/libssl/src/crypto/asn1/tasn_dec.c | |||
@@ -171,6 +171,11 @@ ASN1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len, | |||
171 | 171 | ||
172 | if (!pval) | 172 | if (!pval) |
173 | return 0; | 173 | return 0; |
174 | /* always start fresh */ | ||
175 | if (*pval) { | ||
176 | ASN1_item_ex_free(pval, it); | ||
177 | *pval = NULL; | ||
178 | } | ||
174 | if (aux && aux->asn1_cb) | 179 | if (aux && aux->asn1_cb) |
175 | asn1_cb = aux->asn1_cb; | 180 | asn1_cb = aux->asn1_cb; |
176 | else | 181 | else |