Don't leak `buf' if realloc fails

Not an issue in ubase but someone might want to re-use this
function elsewhere.
This commit is contained in:
sin 2014-04-17 16:22:58 +01:00
parent 3803adfd7e
commit e4fa3f5c59
1 changed files with 5 additions and 3 deletions

View File

@ -12,7 +12,7 @@ getsysctl(char *variable, char **value)
{
char path[PATH_MAX];
char *p;
char *buf, c;
char *buf, *tmp, c;
int fd;
ssize_t n;
size_t sz, i;
@ -43,11 +43,13 @@ getsysctl(char *variable, char **value)
break;
if (i == sz - 1) {
sz *= 2;
buf = realloc(buf, sz);
if (!buf) {
tmp = realloc(buf, sz);
if (!tmp) {
close(fd);
free(buf);
return -1;
}
buf = tmp;
}
buf[i++] = c;
}