]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
fix a bug for non-root zones
authorVladimír Čunát <vladimir.cunat@nic.cz>
Wed, 15 Nov 2017 10:21:47 +0000 (11:21 +0100)
committerVladimír Čunát <vladimir.cunat@nic.cz>
Wed, 15 Nov 2017 18:27:28 +0000 (19:27 +0100)
Owner name reconstruction didn't work.

lib/cache.c

index d9cb207a9317eb9a7f4863f7e2904a9e4c9b0b90..de4470729bb4334c7fbe88eaa7febd2253fc4cc2 100644 (file)
@@ -477,7 +477,10 @@ static int dname_wire_reconstruct(knot_dname_t *buf, const struct key *k,
                assert(false);
                return ret;
        }
-       ret = knot_dname_to_wire(buf + ret, k->zname, KNOT_DNAME_MAXLEN - kwz.len);
+               /* The last written byte is the zero label for root -> overwrite. */
+       knot_dname_t *zone_start = buf + ret - 1;
+       assert(*zone_start == '\0');
+       ret = knot_dname_to_wire(zone_start, k->zname, KNOT_DNAME_MAXLEN - kwz.len);
        if (ret != k->zlf_len + 1) {
                assert(false);
                return ret < 0 ? ret : kr_error(EILSEQ);