]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Fix cleanup of signature buffer in dns_dnssec_signmessage
authorMark Andrews <marka@isc.org>
Wed, 6 Oct 2021 08:10:36 +0000 (19:10 +1100)
committerMark Andrews <marka@isc.org>
Mon, 11 Oct 2021 23:19:08 +0000 (10:19 +1100)
A NULL pointer could be freed if error handling occured.

(cherry picked from commit 0378c05ba04a6a4c2718afa742289990eaae04f0)

lib/dns/dnssec.c

index acba420e1fa1688096b35ccf927e4d932e1bd8bf..c168fedec9734fbc0ac811e4a153b0005fc33917 100644 (file)
@@ -947,7 +947,6 @@ dns_dnssec_signmessage(dns_message_t *msg, dst_key_t *key) {
        dst_context_t *ctx = NULL;
        isc_mem_t *mctx;
        isc_result_t result;
-       bool signeedsfree = true;
 
        REQUIRE(msg != NULL);
        REQUIRE(key != NULL);
@@ -1036,7 +1035,6 @@ dns_dnssec_signmessage(dns_message_t *msg, dst_key_t *key) {
                                    dynbuf));
 
        isc_mem_put(mctx, sig.signature, sig.siglen);
-       signeedsfree = false;
 
        dns_message_takebuffer(msg, &dynbuf);
 
@@ -1057,7 +1055,7 @@ failure:
        if (dynbuf != NULL) {
                isc_buffer_free(&dynbuf);
        }
-       if (signeedsfree) {
+       if (sig.signature != NULL) {
                isc_mem_put(mctx, sig.signature, sig.siglen);
        }
        if (ctx != NULL) {