]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Fix crash in client side DoH code
authorArtem Boldariev <artem@boldariev.com>
Thu, 6 May 2021 12:14:04 +0000 (15:14 +0300)
committerArtem Boldariev <artem@boldariev.com>
Fri, 7 May 2021 12:47:24 +0000 (15:47 +0300)
This commit fixes a situation when a cstream object could get unlinked
from the list as a result of a cstream->read_cb call. Thus, unlinking
it after the call could crash the program.

lib/isc/netmgr/http.c

index c2e403a5d023fc384560c54aa6cc62301b93189e..9dc5e4d5c3c8f8bf92aa1add06e7f019322899ee 100644 (file)
@@ -528,10 +528,10 @@ call_unlink_cstream_readcb(http_cstream_t *cstream,
                           isc_result_t result) {
        REQUIRE(VALID_HTTP2_SESSION(session));
        REQUIRE(cstream != NULL);
+       ISC_LIST_UNLINK(session->cstreams, cstream, link);
        cstream->read_cb(session->handle, result,
                         &(isc_region_t){ cstream->rbuf, cstream->rbufsize },
                         cstream->read_cbarg);
-       ISC_LIST_UNLINK(session->cstreams, cstream, link);
        put_http_cstream(session->mctx, cstream);
 }