]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Address theoretical resource leak in dns_dt_open()
authorMark Andrews <marka@isc.org>
Sun, 21 Feb 2021 22:44:56 +0000 (09:44 +1100)
committerMark Andrews <marka@isc.org>
Mon, 22 Feb 2021 01:22:31 +0000 (12:22 +1100)
dns_dt_open() is not currently called with mode dns_dtmode_unix.

    *** CID 281489:  Resource leaks  (RESOURCE_LEAK)
    /lib/dns/dnstap.c: 983 in dns_dt_open()
    977
    978      if (!dnstap_file(handle->reader)) {
    979      CHECK(DNS_R_BADDNSTAP);
    980      }
    981      break;
    982      case dns_dtmode_unix:
       CID 281489:  Resource leaks  (RESOURCE_LEAK)
       Variable "handle" going out of scope leaks the storage it points to.
    983      return (ISC_R_NOTIMPLEMENTED);
    984      default:
    985      INSIST(0);
    986      ISC_UNREACHABLE();
    987      }
    988

lib/dns/dnstap.c

index 2688b30a3381392f8846c30b8bfd202edef7ab44..56649f33c053225e1b041fc5fe2d65788c133ea0 100644 (file)
@@ -980,7 +980,8 @@ dns_dt_open(const char *filename, dns_dtmode_t mode, isc_mem_t *mctx,
                }
                break;
        case dns_dtmode_unix:
-               return (ISC_R_NOTIMPLEMENTED);
+               result = ISC_R_NOTIMPLEMENTED;
+               goto cleanup;
        default:
                INSIST(0);
                ISC_UNREACHABLE();