From: Ondřej Surý Date: Tue, 27 Oct 2020 13:18:43 +0000 (+0100) Subject: Fix possible NULL dereference in cd->dlz_destroy() X-Git-Tag: v9.17.7~38^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=38f34c266dc204094812d9e901507a865d441a03;p=thirdparty%2Fbind9.git Fix possible NULL dereference in cd->dlz_destroy() If the call to cd->dlz_create() in dlopen_dlz_create() fails, cd->dbdata may be NULL when dlopen_dlz_destroy() gets called in the cleanup path and passing NULL to the cd->dlz_destroy() callback may cause a NULL dereference. Ensure that does not happen by checking whether cd->dbdata is non-NULL before calling the cd->dlz_destroy() callback. --- diff --git a/bin/named/unix/dlz_dlopen_driver.c b/bin/named/unix/dlz_dlopen_driver.c index df119849701..e88ea6fc52e 100644 --- a/bin/named/unix/dlz_dlopen_driver.c +++ b/bin/named/unix/dlz_dlopen_driver.c @@ -339,7 +339,7 @@ dlopen_dlz_destroy(void *driverarg, void *dbdata) { UNUSED(driverarg); - if (cd->dlz_destroy) { + if (cd->dlz_destroy && cd->dbdata) { MAYBE_LOCK(cd); cd->dlz_destroy(cd->dbdata); MAYBE_UNLOCK(cd);