Module Name:    src
Committed By:   roy
Date:           Fri Jan 25 12:27:13 UTC 2013

Modified Files:
        src/usr.bin/tput: tput.c

Log Message:
If char * > long then print a suitable error when passing a string parameter.


To generate a diff of this commit:
cvs rdiff -u -r1.24 -r1.25 src/usr.bin/tput/tput.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.bin/tput/tput.c
diff -u src/usr.bin/tput/tput.c:1.24 src/usr.bin/tput/tput.c:1.25
--- src/usr.bin/tput/tput.c:1.24	Fri Jan 25 12:12:30 2013
+++ src/usr.bin/tput/tput.c	Fri Jan 25 12:27:13 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: tput.c,v 1.24 2013/01/25 12:12:30 roy Exp $	*/
+/*	$NetBSD: tput.c,v 1.25 2013/01/25 12:27:13 roy Exp $	*/
 
 /*-
  * Copyright (c) 1980, 1988, 1993
@@ -39,7 +39,7 @@ __COPYRIGHT("@(#) Copyright (c) 1980, 19
 #if 0
 static char sccsid[] = "@(#)tput.c	8.3 (Berkeley) 4/28/95";
 #endif
-__RCSID("$NetBSD: tput.c,v 1.24 2013/01/25 12:12:30 roy Exp $");
+__RCSID("$NetBSD: tput.c,v 1.25 2013/01/25 12:27:13 roy Exp $");
 #endif /* not lint */
 
 #include <termios.h>
@@ -145,6 +145,8 @@ process(const char *cap, const char *str
 	    "Unknown %% escape (%s) for capability `%s'";
 	static const char errnum[] =
 	    "Expected a numeric argument [%d] (%s) for capability `%s'";
+	static const char errcharlong[] = 
+	    "Platform does not fit a string into a long for capability '%s'";
 	int i, nparams, piss[TPARM_MAX];
 	long nums[TPARM_MAX];
 	char *strs[TPARM_MAX], *tmp;
@@ -160,9 +162,11 @@ process(const char *cap, const char *str
 	for (i = 0; i < nparams; i++) {
 		if (*++argv == NULL || *argv[0] == '\0')
 			errx(2, errfew, nparams, cap);
-		if (piss[i]) 
+		if (piss[i]) {
+			if (sizeof(char *) > sizeof(long) /* CONSTCOND */)
+				errx(2, errcharlong, cap);
 			strs[i] = *argv;
-		else {
+		} else {
 			errno = 0;
 			nums[i] = strtol(*argv, &tmp, 0);
 			if ((errno == ERANGE && 

Reply via email to