]> git.lizzy.rs Git - plan9front.git/commitdiff
bio: do not leak memory if realloc fails
authorftrvxmtrx <devnull@localhost>
Fri, 2 May 2014 01:58:38 +0000 (03:58 +0200)
committerftrvxmtrx <devnull@localhost>
Fri, 2 May 2014 01:58:38 +0000 (03:58 +0200)
sys/src/libbio/brdstr.c

index a1b14f885bd4aa1796da3eb89050da0c3534f345..d749795d2b24cd790b57452ffb7bc57b9b23c837 100644 (file)
@@ -6,9 +6,11 @@ static char*
 badd(char *p, int *np, char *data, int ndata, int delim, int nulldelim)
 {
        int n;
+       char *oldp;
 
        n = *np;
-       p = realloc(p, n+ndata+1);
+       oldp = p;
+       p = realloc(oldp, n+ndata+1);
        if(p){
                memmove(p+n, data, ndata);
                n += ndata;
@@ -17,7 +19,8 @@ badd(char *p, int *np, char *data, int ndata, int delim, int nulldelim)
                else
                        p[n] = '\0';
                *np = n;
-       }
+       }else
+               free(oldp);
        return p;
 }