]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
daemon: fixed memleak in network address pack
authorMarek Vavruša <marek.vavrusa@nic.cz>
Mon, 27 Apr 2015 14:19:13 +0000 (16:19 +0200)
committerMarek Vavruša <marek.vavrusa@nic.cz>
Mon, 27 Apr 2015 14:19:13 +0000 (16:19 +0200)
daemon/network.c
lib/generic/array.h

index ee2bb1bfc8b35fc799f9b59879b4131ad548d3cf..10a8d6ad0412b4c9e22b5c0e6fe899dc9709f232 100644 (file)
@@ -86,7 +86,10 @@ static int insert_endpoint(struct network *net, const char *addr, struct endpoin
                array_init(*ep_array);
        }
 
-       return array_push(*ep_array, ep);
+       if (array_push(*ep_array, ep) < 0) {
+               return kr_error(ENOMEM);
+       }
+       return kr_ok();
 }
 
 /** Open endpoint protocols. */
index 5655396f15a19110790b1e0ec6102acdd98790bd..a9316482b5d146c90f868e975f9017ec8995e1c2 100644 (file)
@@ -127,9 +127,9 @@ static inline void array_std_free(void *baton, void *p)
  * @return element index on success, <0 on failure
  */
 #define array_push(array, val) \
-       (array).len < (array).cap ? ((array).at[(array).len] = val, (array).len++) \
+       (int)((array).len < (array).cap ? ((array).at[(array).len] = val, (array).len++) \
                : (array_reserve(array, ((array).cap + 1)) < 0 ? -1 \
-                       : ((array).at[(array).len] = val, (array).len++))
+                       : ((array).at[(array).len] = val, (array).len++)))
 
 /**
  * Pop value from the end of the array.
@@ -143,7 +143,7 @@ static inline void array_std_free(void *baton, void *p)
  * @return 0 on success, <0 on failure
  */
 #define array_del(array, i) \
-       (i) < (array).len ? ((array).len -= 1,(array).at[i] = (array).at[(array).len], 0) : -1
+       (int)((i) < (array).len ? ((array).len -= 1,(array).at[i] = (array).at[(array).len], 0) : -1)
 
 /**
  * Return last element of the array.