execl/execlp bugs

Andreas Schwab schwab@suse.de
Fri Sep 14 03:15:00 GMT 2001


I have checked in this patch:

2001-09-14  Andreas Schwab  <schwab@suse.de>

	* posix/execl.c: Fix last argument of memcpy.  Reported by Brian
	Sumner <bls@sgi.com>.
	* posix/execlp.c: Likewise.

--- posix/execl.c.~1.9.~	Mon Jul 16 10:43:42 2001
+++ posix/execl.c	Fri Sep 14 12:05:43 2001
@@ -52,7 +52,8 @@
 	  if ((char *) nptr + argv_max == (char *) argv)
 	    {
 	      /* Stack grows down.  */
-	      argv = (const char **) memcpy (nptr, argv, i);
+	      argv = (const char **) memcpy (nptr, argv,
+					     i * sizeof (const char *));
 	      argv_max += i;
 	    }
 	  else
@@ -64,7 +65,8 @@
 	  else
 #endif
 	    /* We have a hole in the stack.  */
-	    argv = (const char **) memcpy (nptr, argv, i);
+	    argv = (const char **) memcpy (nptr, argv,
+					   i * sizeof (const char *));
 	}
 
       argv[i] = va_arg (args, const char *);
--- posix/execlp.c.~1.9.~	Mon Jul 16 10:43:42 2001
+++ posix/execlp.c	Fri Sep 14 12:06:11 2001
@@ -49,7 +49,8 @@
 	  if ((char *) nptr + argv_max == (char *) argv)
 	    {
 	      /* Stack grows down.  */
-	      argv = (const char **) memcpy (nptr, argv, i);
+	      argv = (const char **) memcpy (nptr, argv,
+					     i * sizeof (const char *));
 	      argv_max += i;
 	    }
 	  else
@@ -61,7 +62,8 @@
 	  else
 #endif
 	    /* We have a hole in the stack.  */
-	    argv = (const char **) memcpy (nptr, argv, i);
+	    argv = (const char **) memcpy (nptr, argv,
+					   i * sizeof (const char *));
 	}
 
       argv[i] = va_arg (args, const char *);

-- 
Andreas Schwab                                  "And now for something
Andreas.Schwab@suse.de				completely different."
SuSE Labs, SuSE GmbH, Schanzäckerstr. 10, D-90443 Nürnberg
Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5



More information about the Libc-hacker mailing list