]> git.ipfire.org Git - thirdparty/ldns.git/commitdiff
do not loop, but syntax error on a malformed unknown RR
authorMatthijs Mekking <matje@NLnetLabs.nl>
Wed, 20 Apr 2011 09:21:29 +0000 (09:21 +0000)
committerMatthijs Mekking <matje@NLnetLabs.nl>
Wed, 20 Apr 2011 09:21:29 +0000 (09:21 +0000)
rr.c

diff --git a/rr.c b/rr.c
index 9d47aa655df77a2d54270b1f837e4c16a6823dda..5be578511fc4307b9e059db3c401fef12e20f38c 100644 (file)
--- a/rr.c
+++ b/rr.c
@@ -431,6 +431,17 @@ ldns_rr_new_frm_str_internal(ldns_rr **newrr, const char *str,
                                                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);
+                                                       if (c == -1) {
+                                                               LDNS_FREE(hex_data_str);
+                                                               LDNS_FREE(rd);
+                                                               LDNS_FREE(b64);
+                                                               ldns_buffer_free(rd_buf);
+                                                               ldns_buffer_free(rr_buf);
+                                                               LDNS_FREE(rdata);
+                                                               ldns_rr_free(new);
+                                                               return LDNS_STATUS_SYNTAX_RDATA_ERR;
+                                                       }
+                                                       rd_strlen = strlen(rd);
                                                        rd_strlen = strlen(rd);
                                                        strncpy(hex_data_str + cur_hex_data_size, rd, rd_strlen);
                                                        cur_hex_data_size += rd_strlen;