Module Name:    src
Committed By:   christos
Date:           Sun Dec 13 18:14:13 UTC 2015

Modified Files:
        src/usr.sbin/sup/source: expand.c

Log Message:
PR/50547: David Binderman: fix bad sizeof


To generate a diff of this commit:
cvs rdiff -u -r1.18 -r1.19 src/usr.sbin/sup/source/expand.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.sbin/sup/source/expand.c
diff -u src/usr.sbin/sup/source/expand.c:1.18 src/usr.sbin/sup/source/expand.c:1.19
--- src/usr.sbin/sup/source/expand.c:1.18	Sat Oct 17 18:26:13 2009
+++ src/usr.sbin/sup/source/expand.c	Sun Dec 13 13:14:13 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: expand.c,v 1.18 2009/10/17 22:26:13 christos Exp $	*/
+/*	$NetBSD: expand.c,v 1.19 2015/12/13 18:14:13 christos Exp $	*/
 
 /*
  * Copyright (c) 1991 Carnegie Mellon University
@@ -78,6 +78,7 @@
 static jmp_buf sjbuf;
 
 static char pathbuf[MAXPATHLEN];
+static size_t maxpathlen;
 static char *path, *pathp, *lastpathp;
 
 static const char globchars[] = "{[*?";/* meta characters */
@@ -104,7 +105,8 @@ expand(char *spec, char **buffer, int bu
 {
 	pathp = path = pathbuf;
 	*pathp = 0;
-	lastpathp = &path[MAXPATHLEN - 2];
+	maxpathlen = sizeof(pathbuf) - 1;
+	lastpathp = &path[maxpathlen];
 	BUFFER = buffer;
 	BUFSIZE = bufsize;
 	bufcnt = 0;
@@ -131,12 +133,11 @@ glob(char *as)
 		if (!*cs || *cs == '/') {
 			if (pathp != path + 1) {
 				*pathp = 0;
-				if (gethdir(path + 1, sizeof path - 1))
+				if (gethdir(path + 1, maxpathlen))
 					goto endit;
-				strncpy(path, path + 1, sizeof path - 1);
+				strlcpy(path, path + 1, maxpathlen);
 			} else
-				strncpy(path, (char *) getenv("HOME"), sizeof path - 1);
-			path[sizeof path - 1] = '\0';
+				strlcpy(path, getenv("HOME"), maxpathlen);
 			pathp = path + strlen(path);
 		}
 	}
@@ -398,7 +399,6 @@ gethdir(char *home, size_t homelen)
 
 	if (pp == 0)
 		return (1);
-	strncpy(home, pp->pw_dir, homelen - 1);
-	home[homelen - 1] = '\0';
+	strlcpy(home, pp->pw_dir, homelen);
 	return (0);
 }

Reply via email to