]> granicus.if.org Git - libevent/commit
evdns: evdns_base_free(): fix UAF of evdns_base with @fail_requests
authorAzat Khuzhin <a3at.mail@gmail.com>
Mon, 23 Nov 2015 12:05:19 +0000 (15:05 +0300)
committerAzat Khuzhin <a3at.mail@gmail.com>
Wed, 25 Nov 2015 10:09:02 +0000 (13:09 +0300)
commit00313c505079c0a93ceb9e26bce1a5be298062ef
treea395181cd0b24f167f8b3c64f8eaab330d67d6ab
parent4ad348310c26e473d97066f05a2998cdb006408d
evdns: evdns_base_free(): fix UAF of evdns_base with @fail_requests

If you call evdns_base_free() with @fail_requests == 1, then it will defer
callback with DNS_ERR_SHUTDOWN, but that callback (internal) uses
data->evdns_base, but we already freed that evdns base, so we can't do
this, fix this by checking @result to DNS_ERR_SHUTDOWN.

Fixes: regress dns/client_fail_requests_getaddrinfo
Fixes: #269
evdns.c