Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 12 Dec 2016 02:14:43 +0000 (UTC)
From:      Xin LI <delphij@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject:   svn commit: r309867 - stable/10/bin/kenv
Message-ID:  <201612120214.uBC2EhjR065935@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: delphij
Date: Mon Dec 12 02:14:42 2016
New Revision: 309867
URL: https://svnweb.freebsd.org/changeset/base/309867

Log:
  MFC r309238,309239:
  
  r309238: Plug a potential memory leak.
  r309239: style(9).

Modified:
  stable/10/bin/kenv/kenv.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/bin/kenv/kenv.c
==============================================================================
--- stable/10/bin/kenv/kenv.c	Mon Dec 12 02:13:35 2016	(r309866)
+++ stable/10/bin/kenv/kenv.c	Mon Dec 12 02:14:42 2016	(r309867)
@@ -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);
 }
 
@@ -190,7 +190,7 @@ ksetenv(const char *env, char *val)
 {
 	int ret;
 
-	ret = kenv(KENV_SET, env, val, strlen(val)+1);
+	ret = kenv(KENV_SET, env, val, strlen(val) + 1);
 	if (ret == 0)
 		printf("%s=\"%s\"\n", env, val);
 	return (ret);
@@ -200,7 +200,7 @@ static int
 kunsetenv(const char *env)
 {
 	int ret;
-	
+
 	ret = kenv(KENV_UNSET, env, NULL, 0);
 	return (ret);
 }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201612120214.uBC2EhjR065935>