]> git.ipfire.org Git - thirdparty/knot-dns.git/commitdiff
kasp DB: little bugfix: additional semantic check
authorLibor Peltan <libor.peltan@nic.cz>
Fri, 19 Oct 2018 12:50:15 +0000 (14:50 +0200)
committerLibor Peltan <libor.peltan@nic.cz>
Mon, 5 Nov 2018 14:46:31 +0000 (15:46 +0100)
src/knot/dnssec/kasp/kasp_db.c

index dd863f4bed665eca3cdd2e1bf1b6156b18d57541..1e634b305510583cc93e20fe657c845aa9082cc4 100644 (file)
@@ -32,13 +32,13 @@ struct kasp_db {
 };
 
 typedef enum {
-       KASPDBKEY_OFFLINE_RRSIG = 0x0, // this MUST be always first, because we use LEQ operator
        KASPDBKEY_PARAMS = 0x1,
        KASPDBKEY_POLICYLAST = 0x2,
        KASPDBKEY_NSEC3SALT = 0x3,
        KASPDBKEY_NSEC3TIME = 0x4,
        KASPDBKEY_MASTERSERIAL = 0x5,
        KASPDBKEY_LASTSIGNEDSERIAL = 0x6,
+       KASPDBKEY_OFFLINE_RRSIG = 0x7,
 } keyclass_t;
 
 static const knot_db_api_t *db_api = NULL;
@@ -836,7 +836,8 @@ int kasp_db_load_offline_rrsig(kasp_db_t *db, const knot_dname_t *for_dname, kno
                ret = KNOT_ERROR;
                goto cleanup;
        }
-       if (knot_dname_cmp((const knot_dname_t *)key.data + 1, rrsig->owner) != 0) {
+       if (key_class(&key) != KASPDBKEY_OFFLINE_RRSIG ||
+           knot_dname_cmp((const knot_dname_t *)key.data + 1, rrsig->owner) != 0) {
                ret = KNOT_ENOENT;
                goto cleanup;
        }
@@ -853,7 +854,8 @@ int kasp_db_load_offline_rrsig(kasp_db_t *db, const knot_dname_t *for_dname, kno
 #undef CHK_RET
        *next_time = 0;
        if ((it = db_api->iter_next(it)) != NULL && db_api->iter_key(it, &key) == KNOT_EOK) {
-               if (knot_dname_cmp(key_dname(&key), rrsig->owner) == 0) {
+               if (key_class(&key) == KASPDBKEY_OFFLINE_RRSIG &&
+                   knot_dname_cmp(key_dname(&key), rrsig->owner) == 0) {
                        *next_time = atol(key_str(&key));
                }
        }