]> git.ipfire.org Git - thirdparty/ldns.git/commitdiff
whitespace bug in ldns-read-zone
authorMatthijs Mekking <matthijs@nlnetlabs.nl>
Wed, 18 Jun 2014 07:55:17 +0000 (09:55 +0200)
committerMatthijs Mekking <matthijs@nlnetlabs.nl>
Wed, 18 Jun 2014 07:55:17 +0000 (09:55 +0200)
rr.c

diff --git a/rr.c b/rr.c
index 5fe4f6ee775ed09f8b183811124b618db3826da0..671c4ebd06367d8b52f593c0ada97195d8720981 100644 (file)
--- a/rr.c
+++ b/rr.c
@@ -670,6 +670,18 @@ ldns_rr_new_question_frm_str(ldns_rr **newrr, const char *str,
                                            true);
 }
 
+static int
+ldns_rr_is_whitespace_line(char* line, int line_len)
+{
+       int i;
+       for (i = 0; i < line_len; i++) {
+               if (!isspace((int)line[i])) {
+                       return 0;
+               }
+       }
+       return 1;
+}
+
 ldns_status
 ldns_rr_new_frm_fp(ldns_rr **newrr, FILE *fp, uint32_t *ttl, ldns_rdf **origin, ldns_rdf **prev)
 {
@@ -745,6 +757,9 @@ ldns_rr_new_frm_fp_l(ldns_rr **newrr, FILE *fp, uint32_t *default_ttl, ldns_rdf
                s = LDNS_STATUS_SYNTAX_TTL;
        } else if (strncmp(line, "$INCLUDE", 8) == 0) {
                s = LDNS_STATUS_SYNTAX_INCLUDE;
+       } else if (ldns_rr_is_whitespace_line(line, size)) {
+               LDNS_FREE(line);
+               return LDNS_STATUS_SYNTAX_EMPTY;
        } else {
                if (origin && *origin) {
                        s = ldns_rr_new_frm_str(&rr, (const char*) line, ttl, *origin, prev);