]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
zimport: avoid crash on empty zone file
authorIvana Krumlová <ivana.krumlova@nic.cz>
Thu, 4 Jul 2019 13:16:23 +0000 (15:16 +0200)
committerIvana Krumlová <ivana.krumlova@nic.cz>
Tue, 9 Jul 2019 12:05:39 +0000 (14:05 +0200)
Fixes: #474
daemon/zimport.c

index f60c35490f647ce96eed34330dd4e3bc9318574b..5bcc54c543029bd4aaed19bd7bf2f7a289f7b299 100644 (file)
@@ -678,6 +678,7 @@ static int zi_record_store(zs_scanner_t *s)
 /** @internal zscanner callback. */
 static int zi_state_parsing(zs_scanner_t *s)
 {
+       bool empty = true;
        while (zs_parse_record(s) == 0) {
                switch (s->state) {
                case ZS_STATE_DATA:
@@ -685,6 +686,7 @@ static int zi_state_parsing(zs_scanner_t *s)
                                return -1;
                        }
                        zone_import_ctx_t *z_import = (zone_import_ctx_t *) s->process.data;
+                       empty = false;
                        if (z_import->origin == 0) {
                                z_import->origin = knot_dname_copy(s->zone_origin,
                                                                  &z_import->pool);
@@ -708,6 +710,10 @@ static int zi_state_parsing(zs_scanner_t *s)
                        return -1;
                case ZS_STATE_EOF:
                case ZS_STATE_STOP:
+                       if (empty) {
+                               kr_log_error("[zimport] empty zone file\n");
+                               return -1;
+                       }
                        return (s->error.counter == 0) ? 0 : -1;
                default:
                        kr_log_error("[zscanner] line: %"PRIu64