Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 24 Jan 2002 21:58:35 +0200
From:      Alexey Zelkin <alexey.zelkin@ionidea.com>
To:        audit@freebsd.org, ache@freebsd.org
Subject:   CFR: strncpy -> strlcpy in setlocale()
Message-ID:  <20020124215835.A58294@gate.sim.ionidea.com>

next in thread | raw e-mail | index | archive | help
hi,

Any objections against this patch ? It's based on
rev 1.23 of NetBSD's setlocale.c.

--- setlocale.c~	Thu Jan 24 18:13:03 2002
+++ setlocale.c		Thu Jan 24 21:56:23 2002
@@ -132,33 +132,35 @@
 		if (!env || !*env || strchr(env, '/'))
 			env = "C";
 
-		(void) strncpy(new_categories[category], env, ENCODING_LEN);
-		new_categories[category][ENCODING_LEN] = '\0';
+		(void)strlcpy(new_categories[category], env,
+		    sizeof(new_categories[category]));
 		if (category == LC_ALL) {
 			for (i = 1; i < _LC_LAST; ++i) {
 				if (!(env = getenv(categories[i])) || !*env)
 					env = new_categories[LC_ALL];
-				(void)strncpy(new_categories[i], env, ENCODING_LEN);
-				new_categories[i][ENCODING_LEN] = '\0';
+				(void)strlcpy(new_categories[i], env,
+				    sizeof(new_categories[category]));
 			}
 		}
 	} else if (category != LC_ALL)  {
-		(void)strncpy(new_categories[category], locale, ENCODING_LEN);
-		new_categories[category][ENCODING_LEN] = '\0';
+		(void)strlcpy(new_categories[category], locale,
+		    sizeof(new_categories[category]));
 	} else {
 		if ((r = strchr(locale, '/')) == NULL) {
 			for (i = 1; i < _LC_LAST; ++i) {
-				(void)strncpy(new_categories[i], locale, ENCODING_LEN);
-				new_categories[i][ENCODING_LEN] = '\0';
+				(void)strlcpy(new_categories[i], locale,
+				    sizeof(new_categories[category]));
 			}
 		} else {
-			for (i = 1; r[1] == '/'; ++r);
+			for (i = 1; r[1] == '/'; ++r)
+				;
 			if (!r[1])
 				return (NULL);	/* Hmm, just slashes... */
 			do {
-				len = r - locale > ENCODING_LEN ? ENCODING_LEN : r - locale;
-				(void)strncpy(new_categories[i], locale, len);
-				new_categories[i][len] = '\0';
+				len = r - locale > sizeof(new_categories[i])
+					? sizeof(new_categories[i])
+					: r - locale;
+				(void)strlcpy(new_categories[i], locale, len);
 				i++;
 				locale = r;
 				while (*locale == '/')
@@ -167,7 +169,7 @@
 			} while (*locale);
 			while (i < _LC_LAST) {
 				(void)strcpy(new_categories[i],
-				    new_categories[i-1]);
+				    new_categories[i - 1]);
 				i++;
 			}
 		}
@@ -201,8 +203,8 @@
 	for (i = 2; i < _LC_LAST; ++i)
 		if (strcmp(current_categories[1], current_categories[i])) {
 			for (i = 2; i < _LC_LAST; ++i) {
-				(void) strcat(current_locale_string, "/");
-				(void) strcat(current_locale_string, current_categories[i]);
+				(void)strcat(current_locale_string, "/");
+				(void)strcat(current_locale_string, current_categories[i]);
 			}
 			break;
 		}

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-audit" in the body of the message




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