]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
lib/lru: args checking
authorMarek Vavruša <marek.vavrusa@nic.cz>
Tue, 9 Jun 2015 23:36:06 +0000 (01:36 +0200)
committerMarek Vavruša <marek.vavrusa@nic.cz>
Tue, 9 Jun 2015 23:36:06 +0000 (01:36 +0200)
lib/generic/lru.h
lib/zonecut.c

index d4125f7e8a1266575ab48e9f6a8c3a3a666a6666..1b38708aed867ce621806f6e8cdb6e6774ea3fef 100644 (file)
@@ -110,6 +110,9 @@ struct { \
 /** @internal Slot data getter */
 static inline void *lru_slot_get(struct lru_hash_base *lru, const char *key, uint32_t len, size_t offset)
 {
+       if (!lru || !key || len == 0) {
+               return NULL;
+       }
        uint32_t id = hash(key, len) % lru->size;
        struct lru_slot *slot = (struct lru_slot *)(lru->slots + (id * lru->stride));
        if (lru_slot_match(slot, key, len)) {
@@ -121,6 +124,9 @@ static inline void *lru_slot_get(struct lru_hash_base *lru, const char *key, uin
 /** @internal Slot data setter */
 static inline void *lru_slot_set(struct lru_hash_base *lru, const char *key, uint32_t len, size_t offset)
 {
+       if (!lru || !key || len == 0) {
+               return NULL;
+       }
        uint32_t id = hash(key, len) % lru->size;
        struct lru_slot *slot = (struct lru_slot *)(lru->slots + (id * lru->stride));
        if (!lru_slot_match(slot, key, len)) {
index 143336fef3162b35c0e992eaec04d422d404026c..d779b482d305bdf9fddb89372df13bedd4259496 100644 (file)
@@ -253,8 +253,10 @@ int kr_zonecut_find_cached(struct kr_context *ctx, struct kr_zonecut *cut, const
        }
 
        /* Start at QNAME parent. */
-       name = knot_wire_next_label(name, NULL);
-       while (txn && name) {
+       if (name[0] != '\0') {
+               name = knot_wire_next_label(name, NULL);
+       }
+       while (txn) {
                if (fetch_ns(ctx, cut, name, txn, timestamp) == 0) {
                        update_cut_name(cut, name);
                        return kr_ok();