]> git.ipfire.org Git - thirdparty/ldns.git/commitdiff
allow for the \0
authorMatthijs Mekking <matje@NLnetLabs.nl>
Wed, 21 Apr 2010 11:30:53 +0000 (11:30 +0000)
committerMatthijs Mekking <matje@NLnetLabs.nl>
Wed, 21 Apr 2010 11:30:53 +0000 (11:30 +0000)
parse.c
resolver.c

diff --git a/parse.c b/parse.c
index 03b31b0a3460c35a5e818b2babc0bc83a47b47ae..2f664712866c6ebeb0799b9dd988d60cf855f925 100644 (file)
--- a/parse.c
+++ b/parse.c
@@ -1,5 +1,5 @@
 /*
- * a generic (simple) parser. Use to parse rr's, private key 
+ * a generic (simple) parser. Use to parse rr's, private key
  * information and /etc/resolv.conf files
  *
  * a Net::DNS like library for C
 #include <strings.h>
 
 ldns_lookup_table ldns_directive_types[] = {
-        { LDNS_DIR_TTL, "$TTL" },  
-        { LDNS_DIR_ORIGIN, "$ORIGIN" }, 
-        { LDNS_DIR_INCLUDE, "$INCLUDE" },  
+        { LDNS_DIR_TTL, "$TTL" },
+        { LDNS_DIR_ORIGIN, "$ORIGIN" },
+        { LDNS_DIR_INCLUDE, "$INCLUDE" },
         { 0, NULL }
 };
 
 /* add max_limit here? */
 ssize_t
 ldns_fget_token(FILE *f, char *token, const char *delim, size_t limit)
-{      
+{
        return ldns_fget_token_l(f, token, delim, limit, NULL);
 }
 
 ssize_t
 ldns_fget_token_l(FILE *f, char *token, const char *delim, size_t limit, int *line_nr)
-{      
+{
        int c, prev_c;
        int p; /* 0 -> no parenthese seen, >0 nr of ( seen */
        int com, quoted;
@@ -111,7 +111,7 @@ ldns_fget_token_l(FILE *f, char *token, const char *delim, size_t limit, int *li
                        continue;
                }
 
-               
+
                if (c == '\n' && p != 0 && t > token) {
                        /* in parentheses */
                        if (line_nr) {
@@ -170,7 +170,7 @@ ssize_t
 ldns_fget_keyword_data(FILE *f, const char *keyword, const char *k_del, char *data,
                const char *d_del, size_t data_limit)
 {
-       return ldns_fget_keyword_data_l(f, keyword, k_del, data, d_del, 
+       return ldns_fget_keyword_data_l(f, keyword, k_del, data, d_del,
                       data_limit, NULL);
 }
 
@@ -204,7 +204,7 @@ ldns_fget_keyword_data_l(FILE *f, const char *keyword, const char *k_del, char *
 
 ssize_t
 ldns_bget_token(ldns_buffer *b, char *token, const char *delim, size_t limit)
-{      
+{
        int c, lc;
        int p; /* 0 -> no parenthese seen, >0 nr of ( seen */
        int com, quoted;
@@ -293,10 +293,10 @@ ldns_bget_token(ldns_buffer *b, char *token, const char *delim, size_t limit)
                                goto tokenread;
                         }
                }
-               
+
                *t++ = c;
                i++;
-               if (limit > 0 && i >= limit - 1) {
+               if (limit > 0 && i >= limit) {
                        *t = '\0';
                        return -1;
                }
@@ -320,9 +320,9 @@ ldns_bget_token(ldns_buffer *b, char *token, const char *delim, size_t limit)
 tokenread:
        ldns_bskipcs(b, delim);
        *t = '\0';
-       
+
        if (p != 0) {
-               return -1; 
+               return -1;
        }
        return (ssize_t)i;
 }
@@ -331,7 +331,7 @@ void
 ldns_bskipc(ldns_buffer *buffer, char c)
 {
         while (c == (char) ldns_buffer_read_u8_at(buffer, ldns_buffer_position(buffer))) {
-                if (ldns_buffer_available_at(buffer, 
+                if (ldns_buffer_available_at(buffer,
                                        buffer->_position + sizeof(char), sizeof(char))) {
                         buffer->_position += sizeof(char);
                 } else {
index 946ae3bfb0608fb1b5f14d3b797daac690d4e672..f459d364ec87d6223b45219dcb1695995469dfa5 100644 (file)
@@ -745,9 +745,9 @@ ldns_resolver_new_frm_fp_l(ldns_resolver **res, FILE *fp, int *line_nr)
                                /* search list domain dname */
                                gtr = ldns_fget_token_l(fp, word, LDNS_PARSE_SKIP_SPACE, 0, line_nr);
                                b = LDNS_MALLOC(ldns_buffer);
-                               ldns_buffer_new_frm_data(b, word, (size_t) gtr);
 
-                               gtr = ldns_bget_token(b, word, LDNS_PARSE_NORMAL, (size_t) gtr);
+                               ldns_buffer_new_frm_data(b, word, (size_t) gtr);
+                               gtr = ldns_bget_token(b, word, LDNS_PARSE_NORMAL, (size_t) gtr + 1);
                                while (gtr > 0) {
                                        tmp = ldns_rdf_new_frm_str(LDNS_RDF_TYPE_DNAME, word);
                                        if (!tmp) {
@@ -758,7 +758,7 @@ ldns_resolver_new_frm_fp_l(ldns_resolver **res, FILE *fp, int *line_nr)
                                        ldns_resolver_push_searchlist(r, tmp);
 
                                        ldns_rdf_deep_free(tmp);
-                                       gtr = ldns_bget_token(b, word, LDNS_PARSE_NORMAL, (size_t) gtr);
+                                       gtr = ldns_bget_token(b, word, LDNS_PARSE_NORMAL, (size_t) gtr + 1);
                                }
                                ldns_buffer_free(b);
                                gtr = 1;