summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Baryshkov <dbaryshkov@gmail.com>2020-03-07 01:09:55 +0300
committerDmitry Baryshkov <dbaryshkov@gmail.com>2020-03-07 01:09:55 +0300
commit1ccfe3b755c71bdb5c6e9bf842ac7aaa92f5913f (patch)
tree52a137436e9e66d18ed3a746e37f108465343db2
parent41404c6e91c06c1c1f3c65c2addf0c43b6eb3174 (diff)
downloadgnutls-1ccfe3b755c71bdb5c6e9bf842ac7aaa92f5913f.tar.gz
lib/x509/output.c: remove occasioinal memory leak in print_issuer_sign_tool()
Remove memory leak in error handling in print_issuer_sign_tool() by moving asn1_delete_structure to the end of the function. Signed-off-by: Dmitry Baryshkov <dbaryshkov@gmail.com>
-rw-r--r--fuzz/gnutls_ocsp_resp_parser_fuzzer.repro/0b1ff2feb11e82901e7ba196270fa134e5169364bin0 -> 1609 bytes
-rw-r--r--lib/x509/output.c3
2 files changed, 2 insertions, 1 deletions
diff --git a/fuzz/gnutls_ocsp_resp_parser_fuzzer.repro/0b1ff2feb11e82901e7ba196270fa134e5169364 b/fuzz/gnutls_ocsp_resp_parser_fuzzer.repro/0b1ff2feb11e82901e7ba196270fa134e5169364
new file mode 100644
index 0000000000..f454bf40c8
--- /dev/null
+++ b/fuzz/gnutls_ocsp_resp_parser_fuzzer.repro/0b1ff2feb11e82901e7ba196270fa134e5169364
Binary files differ
diff --git a/lib/x509/output.c b/lib/x509/output.c
index 2aa78b478b..1e605d8fb6 100644
--- a/lib/x509/output.c
+++ b/lib/x509/output.c
@@ -908,7 +908,6 @@ static void print_issuer_sign_tool(gnutls_buffer_st * str, const char *prefix, c
if ((result = _asn1_strict_der_decode(&tmpasn, der->data, der->size, asn1_err)) != ASN1_SUCCESS) {
gnutls_assert();
_gnutls_debug_log("_asn1_strict_der_decode: %s\n", asn1_err);
- asn1_delete_structure(&tmpasn);
goto hexdump;
}
@@ -949,6 +948,8 @@ static void print_issuer_sign_tool(gnutls_buffer_st * str, const char *prefix, c
return;
hexdump:
+ asn1_delete_structure(&tmpasn);
+
addf(str, _("%s\t\t\tASCII: "), prefix);
_gnutls_buffer_asciiprint(str, (char*)der->data, der->size);