]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Run conn_cleanup on isccc_cc_towire failure in control_respond
authorOndřej Surý <ondrej@isc.org>
Thu, 30 Apr 2026 04:29:21 +0000 (06:29 +0200)
committerOndřej Surý (GitLab job 7272031) <ondrej@isc.org>
Thu, 30 Apr 2026 07:33:28 +0000 (07:33 +0000)
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
(cherry picked from commit 1b681dfa2ff408f40ca5e3453e336ff8864af27c)

bin/named/controlconf.c

index b1a359550273be25a0c59ff2a4a10f33af899d3d..ef8f8e3dd4fe90979c28ae8a599e54d1a2653848 100644 (file)
@@ -368,11 +368,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);