From cc38fe32c0337564d03d7ce178ca2fbc81560d88 Mon Sep 17 00:00:00 2001 From: Mark Andrews Date: Fri, 17 Apr 2015 14:04:47 +1000 Subject: [PATCH] 4104. [bug] Address uninitialized elements. [RT #39252] (cherry picked from commit f1a261ba2d5e11a106a0a95c46b409a9daf138ef) --- CHANGES | 2 ++ lib/dns/rbtdb.c | 1 + lib/dns/zone.c | 3 +++ lib/isc/unix/socket.c | 2 +- lib/isccfg/namedconf.c | 5 ++++- 5 files changed, 11 insertions(+), 2 deletions(-) diff --git a/CHANGES b/CHANGES index 7ad84a6f9a..f0145cb4ed 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,5 @@ +4104. [bug] Address uninitialized elements. [RT #39252] + 4102. [bug] Fix a use after free bug introduced in change #4094. [RT #39281] diff --git a/lib/dns/rbtdb.c b/lib/dns/rbtdb.c index ce39729804..baf16a7b6f 100644 --- a/lib/dns/rbtdb.c +++ b/lib/dns/rbtdb.c @@ -1514,6 +1514,7 @@ static inline void init_rdataset(dns_rbtdb_t *rbtdb, rdatasetheader_t *h) { ISC_LINK_INIT(h, link); h->heap_index = 0; + h->rdh_ttl = 0; h->is_mmapped = 0; h->next_is_relative = 0; h->node_is_relative = 0; diff --git a/lib/dns/zone.c b/lib/dns/zone.c index 2507cd7bb1..ec25666cf1 100644 --- a/lib/dns/zone.c +++ b/lib/dns/zone.c @@ -1031,6 +1031,7 @@ dns_zone_create(dns_zone_t **zonep, isc_mem_t *mctx) { zone->rss_oldver = NULL; zone->rss_event = NULL; zone->rss_state = NULL; + zone->updatemethod = dns_updatemethod_increment; zone->magic = ZONE_MAGIC; @@ -3810,6 +3811,8 @@ update_soa_serial(dns_db_t *db, dns_dbversion_t *ver, dns_diff_t *diff, isc_uint32_t serial; isc_result_t result; + INSIST(method != dns_updatemethod_none); + CHECK(dns_db_createsoatuple(db, ver, mctx, DNS_DIFFOP_DEL, &deltuple)); CHECK(dns_difftuple_copy(deltuple, &addtuple)); addtuple->op = DNS_DIFFOP_ADD; diff --git a/lib/isc/unix/socket.c b/lib/isc/unix/socket.c index 2fbf0538fe..4cd7ecc24d 100644 --- a/lib/isc/unix/socket.c +++ b/lib/isc/unix/socket.c @@ -2266,6 +2266,7 @@ allocate_socket(isc__socketmgr_t *manager, isc_sockettype_t type, sock->dscp = 0; /* TOS/TCLASS is zero until set. */ sock->dupped = 0; sock->statsindex = NULL; + sock->active = 0; ISC_LINK_INIT(sock, link); @@ -2941,7 +2942,6 @@ socket_create(isc_socketmgr_t *manager0, int pf, isc_sockettype_t type, INSIST(0); } - sock->active = 0; sock->pf = pf; result = opensocket(manager, sock, (isc__socket_t *)dup_socket); diff --git a/lib/isccfg/namedconf.c b/lib/isccfg/namedconf.c index 282d23e606..5df39830de 100644 --- a/lib/isccfg/namedconf.c +++ b/lib/isccfg/namedconf.c @@ -783,7 +783,10 @@ parse_serverid(cfg_parser_t *pctx, const cfg_type_t *type, return (cfg_create_obj(pctx, &cfg_type_none, ret)); if (pctx->token.type == isc_tokentype_string && strcasecmp(TOKEN_STRING(pctx), "hostname") == 0) { - return (cfg_create_obj(pctx, &cfg_type_hostname, ret)); + result = cfg_create_obj(pctx, &cfg_type_hostname, ret); + if (result == ISC_R_SUCCESS) + (*ret)->value.boolean = ISC_TRUE; + return (result); } cfg_ungettoken(pctx); return (cfg_parse_qstring(pctx, type, ret));