]> git.ipfire.org Git - thirdparty/ldns.git/commitdiff
added ldns_resolver_searchlist_count, which removes some XXXs
authorMiek Gieben <miekg@NLnetLabs.nl>
Mon, 23 Jan 2006 15:11:34 +0000 (15:11 +0000)
committerMiek Gieben <miekg@NLnetLabs.nl>
Mon, 23 Jan 2006 15:11:34 +0000 (15:11 +0000)
Changelog
dnssec.c
ldns/resolver.h
packet.c
resolver.c
rr.c

index 00d11c8e08a3a1e9f1806423d4007127e37335bf..c4bdae7d44afe6e17ae38a8e4ee7acd191a27281 100644 (file)
--- a/Changelog
+++ b/Changelog
@@ -41,6 +41,7 @@
        * tsig.h: made internal used functions static:
          ldns_digest_name and ldns_tsig_mac_new
        New:
+       * ldns_resolver_searchlist_count: return the searchlist counter
        * ldns_zone_sort: Sort a zone
        * ldns_bgsend(): background send, returns a socket.
        Removed:
index a8a11ec38ddd68a9860cec856cf6fc0e510f56fc..cbf1db8d206b4c4cf17e4e8048ffe5dd76e96f6f 100644 (file)
--- a/dnssec.c
+++ b/dnssec.c
@@ -617,8 +617,7 @@ ldns_key_buf2rsa(ldns_buffer *key)
                /* need some smart comment here XXX*/
                /* the exponent is too large so it's places
                 * futher...???? */
-               memcpy(&int16,
-                               ldns_buffer_at(key, 1), 2);
+               memcpy(&int16, ldns_buffer_at(key, 1), 2);
                exp = ntohs(int16);
                offset = 3;
        } else {
index 96ba15ed062ecc70c63aa347a6f3c01a0277b4bf..4baf2eb300e976fa1f3058cabb38a4915592b4da 100644 (file)
@@ -269,6 +269,13 @@ char *ldns_resolver_tsig_keydata(ldns_resolver *r);
  */
 ldns_rdf* ldns_resolver_pop_nameserver(ldns_resolver *r);
 
+/**
+ * Return the resolver's searchlist count
+ * \param[in] r the resolver
+ * \return the searchlist count
+ */
+size_t ldns_resolver_searchlist_count(ldns_resolver *r);
+
 /* write access function */
 /**
  * Set the port the resolver should use
index f32ea496fe55b00365d66d51a50d8c09f3d3e44b..eef0dba757d2c58100e4a7d4f0861b8b3b60bce0 100644 (file)
--- a/packet.c
+++ b/packet.c
@@ -619,7 +619,6 @@ ldns_pkt_set_additional(ldns_pkt *p, ldns_rr_list *rr)
 void
 ldns_pkt_set_question(ldns_pkt *p, ldns_rr_list *rr)
 {
-       /* XXX check for only one rr ?? */
        p->_question = rr;
 }
 
index 08285b0127a9c4d76876cf757e7b0d43e3617970..01f79835ca8c2003d59bff706b34b4b88752f15e 100644 (file)
@@ -89,7 +89,7 @@ ldns_resolver_domain(ldns_resolver *r)
 ldns_rdf **
 ldns_resolver_searchlist(ldns_resolver *r)
 {
-       return r->_searchlist;
+       return r->_searchlist_count;
 }
 
 ldns_rdf **
@@ -182,6 +182,12 @@ ldns_resolver_random(ldns_resolver *r)
        return r->_random;
 }
 
+size_t
+ldns_resolver_searchlist_count(ldns_resolver *r)
+{
+       return r->_searchlist_count;
+}
+
 /* write */
 void
 ldns_resolver_set_port(ldns_resolver *r, uint16_t p)
@@ -451,8 +457,7 @@ ldns_resolver_push_searchlist(ldns_resolver *r, ldns_rdf *d)
                return;
        }
 
-       /* need functions XXX */
-       list_count = r->_searchlist_count;
+       list_count = ldns_resolver_searchlist_count(r);
        searchlist = ldns_resolver_searchlist(r);
 
        searchlist = LDNS_XREALLOC(searchlist, ldns_rdf *, (list_count + 1));
@@ -676,7 +681,7 @@ ldns_resolver_deep_free(ldns_resolver *res)
        
        if (res) {
                if (res->_searchlist) {
-                       for (i = 0; i < res->_searchlist_count; i++) {
+                       for (i = 0; i < ldns_resolver_searchlist_count(res); i++) {
                                ldns_rdf_deep_free(res->_searchlist[i]);
                        }
                        LDNS_FREE(res->_searchlist);
diff --git a/rr.c b/rr.c
index a29e7e4a5f6466fd0901ddd8c04503618b6f3fb6..8bf554a2b37799be26f5016721d4677fae51f0ae 100644 (file)
--- a/rr.c
+++ b/rr.c
@@ -342,10 +342,21 @@ ldns_rr_new_frm_str(const char *str, uint16_t default_ttl, ldns_rdf *origin, ldn
                                        /* unknown RR data */
                                        if (rd_strlen == 2 && strncmp(rd, "\\#", 2) == 0 && !quoted) {
                                                c = ldns_bget_token(rd_buf, rd, delimiters, LDNS_MAX_RDFLEN);
-                                               /* c can be -1 .. XXX TODO jelte */
+                                               if (c == -1) {
+                                                       /* something goes very wrong here */
+                                                       ldns_buffer_free(rd_buf);
+                                                       LDNS_FREE(rd);
+                                                       return NULL;
+                                               }
                                                hex_data_size = (uint16_t) atoi(rd);
                                                /* copy the hex chars into hex str (which is 2 chars per byte) */
                                                hex_data_str = LDNS_XMALLOC(char, 2 * hex_data_size + 1);
+                                               if (!hex_data_str) {
+                                                       /* malloc error */
+                                                       ldns_buffer_free(rd_buf);
+                                                       LDNS_FREE(rd);
+                                                       return NULL;
+                                               }
                                                cur_hex_data_size = 0;
                                                while(cur_hex_data_size < 2 * hex_data_size) {
                                                        c = ldns_bget_token(rd_buf, rd, delimiters, LDNS_MAX_RDFLEN);