removed benign memory leak in addrewrite
authorvenaas <venaas>
Wed, 14 May 2008 13:29:41 +0000 (13:29 +0000)
committervenaas <venaas@e88ac4ed-0b26-0410-9574-a7f39faa03bf>
Wed, 14 May 2008 13:29:41 +0000 (13:29 +0000)
git-svn-id: https://svn.testnett.uninett.no/radsecproxy/trunk@257 e88ac4ed-0b26-0410-9574-a7f39faa03bf

radsecproxy.c

index 7401028..33f4673 100644 (file)
@@ -2820,9 +2820,12 @@ void addrewrite(char *value, char **attrs, char **vattrs) {
        if (!a)
            debugx(1, DBG_ERR, "malloc failed");
     
-       for (i = 0; i < n; i++)
+       for (i = 0; i < n; i++) {
            if (!(a[i] = attrname2val(attrs[i])))
                debugx(1, DBG_ERR, "addrewrite: invalid attribute %s", attrs[i]);
+           free(attrs[i]);
+       }
+       free(attrs);
        a[i] = 0;
     }
     
@@ -2833,9 +2836,12 @@ void addrewrite(char *value, char **attrs, char **vattrs) {
        if (!va)
            debugx(1, DBG_ERR, "malloc failed");
     
-       for (p = va, i = 0; i < n; i++, p += 2)
+       for (p = va, i = 0; i < n; i++, p += 2) {
            if (!vattrname2val(vattrs[i], p, p + 1))
                debugx(1, DBG_ERR, "addrewrite: invalid vendor attribute %s", vattrs[i]);
+           free(vattrs[i]);
+       }
+       free(vattrs);
        *p = 0;
     }
     
@@ -3037,8 +3043,6 @@ void confrewrite_cb(struct gconffile **cf, char *block, char *opt, char *val) {
                     NULL
                     );
     addrewrite(val, attrs, vattrs);
-    free(attrs);
-    free(vattrs);
 }
 
 void getmainconfig(const char *configfile) {