Plug a potential memory leak.

MFC after:	2 weeks
This commit is contained in:
Xin LI 2016-11-28 07:19:45 +00:00
parent 6555f01eec
commit 305de00ec4

View File

@ -63,7 +63,6 @@ main(int argc, char **argv)
char *env, *eq, *val;
int ch, error;
error = 0;
val = NULL;
env = NULL;
while ((ch = getopt(argc, argv, "hNquv")) != -1) {
@ -128,7 +127,7 @@ main(int argc, char **argv)
static int
kdumpenv(void)
{
char *buf, *cp;
char *buf, *bp, *cp;
int buflen, envlen;
envlen = kenv(KENV_DUMP, NULL, NULL, 0);
@ -136,10 +135,9 @@ kdumpenv(void)
return (-1);
for (;;) {
buflen = envlen * 120 / 100;
buf = malloc(buflen + 1);
buf = calloc(1, buflen + 1);
if (buf == NULL)
return (-1);
memset(buf, 0, buflen + 1); /* Be defensive */
envlen = kenv(KENV_DUMP, NULL, buf, buflen);
if (envlen < 0) {
free(buf);
@ -151,21 +149,23 @@ kdumpenv(void)
break;
}
for (; *buf != '\0'; buf += strlen(buf) + 1) {
for (bp = buf; *bp != '\0'; bp += strlen(bp) + 1) {
if (hflag) {
if (strncmp(buf, "hint.", 5) != 0)
if (strncmp(bp, "hint.", 5) != 0)
continue;
}
cp = strchr(buf, '=');
cp = strchr(bp, '=');
if (cp == NULL)
continue;
*cp++ = '\0';
if (Nflag)
printf("%s\n", buf);
printf("%s\n", bp);
else
printf("%s=\"%s\"\n", buf, cp);
buf = cp;
printf("%s=\"%s\"\n", bp, cp);
bp = cp;
}
free(buf);
return (0);
}