]> git.ipfire.org Git - thirdparty/ldns.git/commitdiff
Make ldns_resolver_pop_nameserver clear the array when there was only one nameserver...
authorWillem Toorop <willem@NLnetLabs.nl>
Tue, 21 Aug 2012 08:46:12 +0000 (08:46 +0000)
committerWillem Toorop <willem@NLnetLabs.nl>
Tue, 21 Aug 2012 08:46:12 +0000 (08:46 +0000)
Changelog
resolver.c

index bd90ff2e689111e9d41842a76362d8d5413ff350..a8547c098ba9accd76c091bd029adc5577a26750 100644 (file)
--- a/Changelog
+++ b/Changelog
@@ -1,4 +1,6 @@
 1.6.14
+       * bugfix: Make ldns_resolver_pop_nameserver clear the array when
+         there was only one.
        * bugfix #459: Export only symbols defined in ldns_symbols
        * bugfix #458: Track all newly created signatures when signing.
        * bugfix #454: Only set -g and -O2 CFLAGS when no CFLAGS was given.
index 1a788a363fe95ae2b8e7518c21fd587eec804131..8f4f4d418e54d17f790eb6574d53d881c430c7e8 100644 (file)
@@ -253,13 +253,20 @@ ldns_resolver_pop_nameserver(ldns_resolver *r)
 
        pop = nameservers[ns_count - 1];
 
-       nameservers = LDNS_XREALLOC(nameservers, ldns_rdf *, (ns_count - 1));
-       rtt = LDNS_XREALLOC(rtt, size_t, (ns_count - 1));
+       if (ns_count == 1) {
+               LDNS_FREE(nameservers);
+               LDNS_FREE(rtt);
+
+               ldns_resolver_set_nameservers(r, NULL);
+               ldns_resolver_set_rtt(r, NULL);
+       } else {
+               nameservers = LDNS_XREALLOC(nameservers, ldns_rdf *, 
+                               (ns_count - 1));
+               rtt = LDNS_XREALLOC(rtt, size_t, (ns_count - 1));
 
-        if(nameservers)
                ldns_resolver_set_nameservers(r, nameservers);
-        if(rtt)
                ldns_resolver_set_rtt(r, rtt);
+       }
        /* decr the count */
        ldns_resolver_dec_nameserver_count(r);
        return pop;