2004-03-01  Roland McGrath  <roland@redhat.com>

	* strace.c (main): Avoid potential buffer overruns from ludicrous
	arguments or PATH values.
diff --git a/strace.c b/strace.c
index 3f42b3c..23d72c8 100644
--- a/strace.c
+++ b/strace.c
@@ -417,8 +417,14 @@
 		char pathname[MAXPATHLEN];
 
 		filename = argv[optind];
-		if (strchr(filename, '/'))
+		if (strchr(filename, '/')) {
+			if (strlen(filename) > sizeof pathname - 1) {
+				errno = ENAMETOOLONG;
+				perror("strace: exec");
+				exit(1);
+			}
 			strcpy(pathname, filename);
+		}
 #ifdef USE_DEBUGGING_EXEC
 		/*
 		 * Debuggers customarily check the current directory
@@ -443,6 +449,8 @@
 					getcwd(pathname, MAXPATHLEN);
 					len = strlen(pathname);
 				}
+				else if (n > sizeof pathname - 1)
+					continue;
 				else {
 					strncpy(pathname, path, n);
 					len = n;