chiark / gitweb /
buffer: Provide buffer_destroy
[secnet.git] / ipaddr.c
index 6d0b02ad0b1f61c18c845de917b448985d972891..899581f0e0a11bae619c03b8ad1d01fb32b010af 100644 (file)
--- a/ipaddr.c
+++ b/ipaddr.c
@@ -7,6 +7,7 @@
 #include <stdio.h>
 #include <string.h>
 #include "ipaddr.h"
+#include "util.h"
 
 #define DEFAULT_ALLOC 2
 #define EXTEND_ALLOC_BY 4
@@ -35,10 +36,7 @@ static void subnet_list_set_len(struct subnet_list *a, int32_t l)
     if (l>a->alloc) {
        assert(a->alloc < (int)(INT_MAX/sizeof(*nd))-EXTEND_ALLOC_BY);
        na=a->alloc+EXTEND_ALLOC_BY;
-       nd=realloc(a->list,sizeof(*nd)*na);
-       if (!nd) {
-           fatal_perror("subnet_list_set_len: realloc");
-       }
+       nd=safe_realloc_ary(a->list,sizeof(*nd),na,"subnet_list_set_len");
        a->alloc=na;
        a->list=nd;
     }
@@ -120,10 +118,7 @@ static void ipset_set_len(struct ipset *a, int32_t l)
     if (l>a->a) {
        assert(a->a < INT_MAX-EXTEND_ALLOC_BY);
        na=a->a+EXTEND_ALLOC_BY;
-       nd=realloc(a->d,sizeof(*nd)*na);
-       if (!nd) {
-           fatal_perror("ipset_set_len: realloc");
-       }
+       nd=safe_realloc_ary(a->d,sizeof(*nd),na,"ipset_set_len");
        a->a=na;
        a->d=nd;
     }
@@ -136,7 +131,6 @@ static void ipset_append_range(struct ipset *a, struct iprange r)
     a->d[a->l-1]=r;
 }
 
-#define max(a,b) (a>b?a:b)
 struct ipset *ipset_union(struct ipset *a, struct ipset *b)
 {
     struct ipset *c;
@@ -161,7 +155,7 @@ struct ipset *ipset_union(struct ipset *a, struct ipset *b)
            ipset_append_range(c,r);
        else if (r.a <= c->d[c->l-1].b+1)
            /* Extends (or is consumed by) the last range */
-           c->d[c->l-1].b=max(c->d[c->l-1].b, r.b);
+           c->d[c->l-1].b=MAX(c->d[c->l-1].b, r.b);
        else
            ipset_append_range(c,r);
     }
@@ -358,7 +352,7 @@ string_t subnet_to_string(struct subnet sn)
     uint8_t a,b,c,d;
     string_t s;
 
-    s=safe_malloc(19,"subnet_to_string");
+    s=ipaddr_getbuf();
     a=addr>>24;
     b=addr>>16;
     c=addr>>8;
@@ -418,7 +412,7 @@ static struct subnet string_item_to_subnet(item_t *i, cstring_t desc,
     return s;
 }
 
-uint32_t string_item_to_ipaddr(item_t *i, cstring_t desc)
+uint32_t string_item_to_ipaddr(const item_t *i, cstring_t desc)
 {
     uint32_t a, b, c, d;
     int match;