]> git.ipfire.org Git - thirdparty/ldns.git/commitdiff
now it really should work (cleanly)
authorMiek Gieben <miekg@NLnetLabs.nl>
Mon, 11 Apr 2005 10:43:28 +0000 (10:43 +0000)
committerMiek Gieben <miekg@NLnetLabs.nl>
Mon, 11 Apr 2005 10:43:28 +0000 (10:43 +0000)
buffer.c
parse.c
rr.c
run-test18.c

index 28c4ba056557cd6c6cac20a16338d699d1ca3e70..43b05f4a391b85dd13b7dca42737edf8ee245490 100644 (file)
--- a/buffer.c
+++ b/buffer.c
@@ -162,7 +162,6 @@ ldns_buffer_free(ldns_buffer *buffer)
        if (!buffer) {
                return;
        }
-
 /*
        if (!buffer->_fixed) {
 */
@@ -184,6 +183,7 @@ int
 ldns_bgetc(ldns_buffer *buffer)
 {
        if (!ldns_buffer_available_at(buffer, buffer->_position, sizeof(uint8_t))) {
+               ldns_buffer_set_position(buffer, ldns_buffer_limit(buffer));
                /* ldns_buffer_rewind(buffer);*/
                return EOF;
        }
diff --git a/parse.c b/parse.c
index 6a4ca03cb1d613ed375de36ea2c46b58b5a57454..1aafb0bbab7d869c7f265ec573497a371f06bb4c 100644 (file)
--- a/parse.c
+++ b/parse.c
@@ -84,7 +84,6 @@ ldns_fget_token(FILE *f, char *token, const char *delim, size_t limit)
                del = delim;
        }
 
-
        p = 0;
        i = 0;
        t = token;
@@ -124,16 +123,18 @@ ldns_fget_token(FILE *f, char *token, const char *delim, size_t limit)
                        return -1;
                }
        }
+       *t = '\0';
+       if (p != 0) {
+               return -1;
+       }
+       return 0;
 
 tokenread:
+       /* skip something here too; ldns_fskipc(f, del) */
        *t = '\0';
        if (p != 0) {
                return -1;
        }
-       if (c == EOF) {
-               return 0;
-       } 
-       /* skip something here too; ldns_fskipc(f, del) */
        return (ssize_t)i;
 }
 
@@ -214,13 +215,11 @@ ldns_bget_token(ldns_buffer *b, char *token, const char *delim, size_t limit)
                        continue;
                }
 
-#if 0
                if (p < 0) {
                        /* more ) then ( */
                        *t = '\0';
-                       return -1;
+                       return 0;
                }
-#endif
 
                if (c == '\n' && p != 0) {
                        /* in parentheses */
@@ -241,19 +240,23 @@ ldns_bget_token(ldns_buffer *b, char *token, const char *delim, size_t limit)
                        return -1;
                }
        }
+
        *t = '\0';
-       printf("eof reached [%s]\n", token);
+       if (i == 0) {
+               /* nothing read */
+               return -1;
+       }
        if (p != 0) {
-               /* return -1; */
+               return -1;
        }
-       return 0;
+       return (ssize_t)i;
 
 tokenread:
        ldns_bskipcs(b, del);
+
        *t = '\0';
-       printf("read [%s]\n", token);
        if (p != 0) {
-               /* return -1; */
+               return -1; 
        }
        return (ssize_t)i;
 }
diff --git a/rr.c b/rr.c
index 5b4672255c36fc75da942ac6ae2bb85ae07eefbb..3f52eaa720a423c038ea1e2b944acd4c77d0859d 100644 (file)
--- a/rr.c
+++ b/rr.c
@@ -112,6 +112,7 @@ ldns_rr_new_frm_str(const char *str)
        char  *type;
        char  *rdata;
        char  *rd;
+       int c;
        
        ldns_rdf *r;
        uint16_t r_cnt;
@@ -138,11 +139,11 @@ ldns_rr_new_frm_str(const char *str)
 
        ldns_buffer_new_frm_data(rr_buf, (char*)str, strlen(str));
        
-       /* split the rr in its parts -1 signal trouble */
+       /* split the rr in its parts -1 signals trouble */
        if (ldns_bget_token(rr_buf, owner, "\t\n ", MAX_DOMAINLEN) == -1) {
                FREE(owner); FREE(ttl); FREE(clas); FREE(rdata);FREE(rd);
                FREE(rd_buf);
-               ldns_buffer_free(rr_buf);
+               /* ldns_buffer_free(rr_buf); */
                return NULL;
        }
        if (ldns_bget_token(rr_buf, ttl, "\t\n ", 21) == -1) {
@@ -162,9 +163,11 @@ ldns_rr_new_frm_str(const char *str)
                clas_val = ldns_get_rr_class_by_name(ttl);
        } else {
                if (ldns_bget_token(rr_buf, clas, "\t\n ", 11) == -1) {
+#if 0
                        FREE(owner); FREE(ttl); FREE(clas); FREE(rdata);FREE(rd);
                        FREE(rd_buf);
                        ldns_buffer_free(rr_buf);
+#endif
                        return NULL;
                }
                clas_val = ldns_get_rr_class_by_name(clas);
@@ -178,13 +181,14 @@ ldns_rr_new_frm_str(const char *str)
                return NULL;
        }
        if (ldns_bget_token(rr_buf, rdata, "\0", MAX_PACKETLEN) == -1) {
-               FREE(owner); FREE(ttl); FREE(clas); FREE(rdata);FREE(rd);
+               FREE(owner); FREE(ttl); FREE(clas); FREE(type);FREE(rd);
                FREE(rd_buf);
-               ldns_buffer_free(rr_buf);
+               /* ldns_buffer_free(rr_buf); */
                return NULL;
        }
        ldns_buffer_new_frm_data(
                        rd_buf, rdata, strlen(rdata));
+
        ldns_rr_set_owner(new, ldns_dname_new_frm_str(owner));
        FREE(owner);
 
@@ -212,15 +216,16 @@ ldns_rr_new_frm_str(const char *str)
                        /* blalba do something different */
                        break;
                default:
-                       while(ldns_bget_token(rd_buf, rd, "\t\n ", MAX_RDFLEN) > 0) {
+                       while((c = ldns_bget_token(rd_buf, rd, "\t\n ", MAX_RDFLEN)) != -1) {
                                r = ldns_rdf_new_frm_str(
                                                ldns_rr_descriptor_field_type(desc, r_cnt),
                                                rd);
-
+#if 0
                                if (!r || (r_cnt > r_max)) {
                                        FREE(rdata);
                                        return NULL;
                                }
+#endif
 
                                ldns_rr_push_rdf(new, r);
                                r_cnt++;
index 3831bd9de32b3880cc435692a62b436879d4fa40..f0b88c6e19ce51f2087c6c7b3102a0088c7d93d9 100644 (file)
@@ -44,20 +44,12 @@ main()
        ldns_rr_print(stdout, rr);
        printf("\n");
 
-       
        soa_string1 = "miek.nl. 3600 IN SOA elektron.atoom.net. miekg.atoom.net. ( \
 2002120700 \n\
 21600      \n\
 7200       \n\
 604800     \n\
 3600       \n\
-)";
-       soa_string3 = "miek.nl. 3600 IN SOA elektron.atoom.net. miekg.atoom.net. ( \
-2002120700 \n\
-21600      \n\
-7200       \n\
-604800     \n\
-3600       \n\
 )";
        soa_string2 = "miek.nl. 3600 IN SOA elektron.atoom.net. miekg.atoom.net. \
 2002120700 \n\
@@ -66,19 +58,12 @@ main()
 604800 \n\
 3600"; 
 
-       printf("string as typed:\n%s\n", soa_string1);
-       printf("string as typed:\n%s\n", soa_string2);
-       printf("string as typed:\n%s\n", soa_string3);
        rr = ldns_rr_new_frm_str(soa_string1);
        ldns_rr_print(stdout, rr);
        printf("\n");
        rr = ldns_rr_new_frm_str(soa_string2);
        ldns_rr_print(stdout, rr);
        printf("\n");
-       rr = ldns_rr_new_frm_str(soa_string3);
-       ldns_rr_print(stdout, rr);
-       printf("\n");
-       exit(0);
 
        rr = ldns_rr_new_frm_str("a.miek.nl. 1800    IN     MX     10    www.atoom.net");
        ldns_rr_print(stdout, rr);
@@ -132,6 +117,7 @@ main()
        ldns_rr_print(stdout, rr);
        printf("\n");
 
+       exit(0);
 
        privkey = ldns_key_new_frm_algorithm(LDNS_SIGN_RSASHA1, 512);
        if (!privkey) {