From: Evan Hunt Date: Sun, 28 May 2017 21:30:36 +0000 (-0700) Subject: [v9_10] Add DLZ db version to activeversions X-Git-Tag: v9.10.6b1~40 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=40a44ab2652733858dbd084aeaf2f4726800f027;p=thirdparty%2Fbind9.git [v9_10] Add DLZ db version to activeversions 4628. [bug] Fixed a potential reference leak in query_getdb(). [RT #45247] (cherry picked from commit 594eadcc341bc29f5977a5f09d910132ea9bd244) --- diff --git a/CHANGES b/CHANGES index d78ad6cf527..38580540f08 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,6 @@ +4628. [bug] Fixed a potential reference leak in query_getdb(). + [RT #45247] + 4627. [func] Deprecate 'dig +sit', it is replaced by 'dig +cookie'. [RT #45245] diff --git a/bin/named/query.c b/bin/named/query.c index 8f2d23a626a..d1bcb5c8c6e 100644 --- a/bin/named/query.c +++ b/bin/named/query.c @@ -698,7 +698,7 @@ ns_query_init(ns_client_t *client) { return (result); } -static inline ns_dbversion_t * +static ns_dbversion_t * query_findversion(ns_client_t *client, dns_db_t *db) { ns_dbversion_t *dbversion; @@ -1180,6 +1180,8 @@ query_getdb(ns_client_t *client, dns_name_t *name, dns_rdatatype_t qtype, zonelabels, &cm, &ci, &tdbp); /* If we successful, we found a better match. */ if (tresult == ISC_R_SUCCESS) { + ns_dbversion_t *dbversion; + /* * If the previous search returned a zone, detach it. */ @@ -1198,15 +1200,16 @@ query_getdb(ns_client_t *client, dns_name_t *name, dns_rdatatype_t qtype, */ *versionp = NULL; - /* - * Get our database version. - */ - dns_db_currentversion(tdbp, versionp); - - /* - * Be sure to return our database. - */ - *dbp = tdbp; + dbversion = query_findversion(client, tdbp); + if (dbversion == NULL) { + result = ISC_R_NOMEMORY; + } else { + /* + * Be sure to return our database. + */ + *dbp = tdbp; + *versionp = dbversion->version; + } /* * We return a null zone, No stats for DLZ zones.