From: Miek Gieben Date: Mon, 11 Apr 2005 10:43:28 +0000 (+0000) Subject: now it really should work (cleanly) X-Git-Tag: release-0.50~144 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=add293dd5e7022ee2b819fb4aa26d803049db7a7;p=thirdparty%2Fldns.git now it really should work (cleanly) --- diff --git a/buffer.c b/buffer.c index 28c4ba05..43b05f4a 100644 --- 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 6a4ca03c..1aafb0bb 100644 --- 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 5b467225..3f52eaa7 100644 --- 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++; diff --git a/run-test18.c b/run-test18.c index 3831bd9d..f0b88c6e 100644 --- a/run-test18.c +++ b/run-test18.c @@ -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) {