]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Run conn_cleanup on isccc_cc_towire failure in control_respond 11915/head
authorOndřej Surý <ondrej@isc.org>
Thu, 30 Apr 2026 04:29:21 +0000 (06:29 +0200)
committerOndřej Surý <ondrej@isc.org>
Thu, 30 Apr 2026 04:47:39 +0000 (06:47 +0200)
The bare return left conn->secret, conn->response, conn->request, and
conn->text pinned until the connection itself was torn down — every
other error in the function reaches conn_cleanup via goto, and the
success path falls into the same label, so the towire-failure return
was the lone outlier.  Send it through the existing cleanup path.

Assisted-by: Claude:claude-opus-4-7
bin/named/controlconf.c

index 048b88f08728b13e07bd618a0a94c7617cf5e8d2..6a37a49f94803b2b8d127c5e6450324e48d074ee 100644 (file)
@@ -354,11 +354,8 @@ control_respond(controlconnection_t *conn) {
        /* Skip the length field (4 bytes) */
        isc_buffer_add(conn->buffer, 4);
 
-       result = isccc_cc_towire(conn->response, &conn->buffer, conn->alg,
-                                &conn->secret);
-       if (result != ISC_R_SUCCESS) {
-               return;
-       }
+       CHECK(isccc_cc_towire(conn->response, &conn->buffer, conn->alg,
+                             &conn->secret));
 
        isc_buffer_init(&b, conn->buffer->base, 4);
        isc_buffer_putuint32(&b, conn->buffer->used - 4);