]> git.ipfire.org Git - thirdparty/knot-dns.git/commitdiff
conf: fix check for allowed empty reference
authorDaniel Salzman <daniel.salzman@nic.cz>
Fri, 5 Sep 2025 18:41:21 +0000 (20:41 +0200)
committerDaniel Salzman <daniel.salzman@nic.cz>
Sun, 7 Sep 2025 13:38:36 +0000 (15:38 +0200)
Fixes 4784c4c60199afa85daec96c70fa04daf0705efe

src/knot/conf/conf.c

index 720c704c9af21d92b4d597410cc6e18ff6831a69..dad7897cd13209d61c8abeaad5656559f4ed7de1 100644 (file)
@@ -180,8 +180,10 @@ conf_val_t conf_zone_get_txn(
        conf_db_get(conf, txn, C_ZONE, key1_name, dname, dname_size, &val);
        switch (val.code) {
        case KNOT_EOK:
-               if (val.blob_len == 1 && (val.item->flags & CONF_REF_EMPTY)) {
-                       static const conf_val_t empty = { .code = KNOT_ENOENT };
+               // 3 ~ 2-byte length prefix + '\0'.
+               if (val.blob_len == 3 && (val.item->flags & (YP_FMULTI | CONF_REF_EMPTY))) {
+                       assert(memcmp(val.blob, "\x00\x01\x00", val.blob_len) == 0);
+                       conf_val_t empty = { .item = val.item, .code = KNOT_ENOENT };
                        return empty;
                }
                return val;