]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
4164. [bug] Don't rename slave files and journals on out of memory.
authorMark Andrews <marka@isc.org>
Sun, 12 Jul 2015 23:46:59 +0000 (09:46 +1000)
committerMark Andrews <marka@isc.org>
Sun, 12 Jul 2015 23:46:59 +0000 (09:46 +1000)
                        [RT #40033]

4163.   [bug]           Address compiler warnings. [RT #40024]

CHANGES
bin/named/config.c
lib/dns/include/dns/rrl.h
lib/dns/rrl.c
lib/dns/update.c
lib/dns/zone.c

diff --git a/CHANGES b/CHANGES
index 0e869e8f784922bc2e4a849aa006f5ffa4bdd223..387d3f517e32849ffd7aa3ca3188268778e41275 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,8 @@
+4164.  [bug]           Don't rename slave files and journals on out of memory.
+                       [RT #40033]
+
+4163.  [bug]           Address compiler warnings. [RT #40024]
+
 4162.  [bug]           httpdmgr->flags was not being initialized. [RT #40017]
 
 4161.  [test]          Add JSON test for traffic size stats; also test
index eb4793a07582923ad4a871f8306675675861af19..d2a428aa05af9fbdf7f4b34cbeda3f669ff10ea8 100644 (file)
@@ -579,7 +579,7 @@ ns_config_getipandkeylist(const cfg_obj_t *config, const cfg_obj_t *list,
        const cfg_obj_t *portobj;
        const cfg_obj_t *dscpobj;
        in_port_t port;
-       isc_dscp_t dscp;
+       isc_dscp_t dscp = -1;
        dns_fixedname_t fname;
        isc_sockaddr_t *addrs = NULL;
        isc_dscp_t *dscps = NULL;
index ef6b72b4280d2bcf105a2d33c13f6b84ab75d479..1f922ab03b89508dd0c4bf75d3645f573df806dc 100644 (file)
@@ -90,16 +90,17 @@ typedef enum {
  */
 #define DNS_RRL_MAX_PREFIX  64
 typedef union dns_rrl_key dns_rrl_key_t;
+struct dns__rrl_key {
+       isc_uint32_t        ip[DNS_RRL_MAX_PREFIX/32];
+       isc_uint32_t        qname_hash;
+       dns_rdatatype_t     qtype;
+       isc_uint8_t         qclass;
+       dns_rrl_rtype_t     rtype   :4; /* 3 bits + sign bit */
+       isc_boolean_t       ipv6    :1;
+};
 union dns_rrl_key {
-       struct {
-               isc_uint32_t        ip[DNS_RRL_MAX_PREFIX/32];
-               isc_uint32_t        qname_hash;
-               dns_rdatatype_t     qtype;
-               isc_uint8_t         qclass;
-               dns_rrl_rtype_t     rtype   :4; /* 3 bits + sign bit */
-               isc_boolean_t       ipv6    :1;
-       } s;
-       isc_uint16_t    w[1];
+       struct dns__rrl_key s;
+       isc_uint16_t    w[sizeof(struct dns__rrl_key)/sizeof(isc_uint16_t)];
 };
 
 /*
index b6200fe96c4a4393af65468dc57a540d011f8576..d33a1607e74a06e24389fed58137faf2bde27439 100644 (file)
@@ -376,7 +376,7 @@ hash_key(const dns_rrl_key_t *key) {
        int i;
 
        hval = key->w[0];
-       for (i = sizeof(*key) / sizeof(key->w[0]) - 1; i >= 0; --i) {
+       for (i = sizeof(key->w) / sizeof(key->w[0]) - 1; i >= 0; --i) {
                hval = key->w[i] + (hval<<1);
        }
        return (hval);
index 351fe4fdce234b25ffc89f7f950a594f1e629232..052d0f9b12bbe6202f6e4357b5d0aec53524c4db 100644 (file)
@@ -569,6 +569,7 @@ rrset_visible(dns_db_t *db, dns_dbversion_t *ver, dns_name_t *name,
                result = ISC_R_SUCCESS;
                break;
        default:
+               *visible = ISC_FALSE;    /* silence false compiler warning */
                break;
        }
        return (result);
index 0a2d5a277470e352a372a3fcf4db9c9209d3a48f..a059bd64b71e3c6177530705428145d5918b6efc 100644 (file)
@@ -4666,10 +4666,14 @@ zone_postload(dns_zone_t *zone, dns_db_t *db, isc_time_t loadtime,
            zone->type == dns_zone_stub ||
            zone->type == dns_zone_key ||
            (zone->type == dns_zone_redirect && zone->masters != NULL)) {
-               if (zone->journal != NULL)
-                       zone_saveunique(zone, zone->journal, "jn-XXXXXXXX");
-               if (zone->masterfile != NULL)
-                       zone_saveunique(zone, zone->masterfile, "db-XXXXXXXX");
+               if (result != ISC_R_NOMEMORY) {
+                       if (zone->journal != NULL)
+                               zone_saveunique(zone, zone->journal,
+                                               "jn-XXXXXXXX");
+                       if (zone->masterfile != NULL)
+                               zone_saveunique(zone, zone->masterfile,
+                                               "db-XXXXXXXX");
+               }
 
                /* Mark the zone for immediate refresh. */
                zone->refreshtime = now;