svn commit: r281743 - stable/10/lib/libc/gen

Jilles Tjoelker jilles at FreeBSD.org
Sun Apr 19 13:51:26 UTC 2015


Author: jilles
Date: Sun Apr 19 13:51:25 2015
New Revision: 281743
URL: https://svnweb.freebsd.org/changeset/base/281743

Log:
  MFC r280919: wordexp: Explicitly pass along IFS.
  
  Per Austin group issue #884, sh should not import IFS from the environment
  but always set it to $' \t\n'. For wordexp(), however, it is documented and
  useful for it to use IFS from the environment.
  
  Since sh currently imports IFS from the environment, this change has no
  functional effect.

Modified:
  stable/10/lib/libc/gen/wordexp.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/lib/libc/gen/wordexp.c
==============================================================================
--- stable/10/lib/libc/gen/wordexp.c	Sun Apr 19 13:46:13 2015	(r281742)
+++ stable/10/lib/libc/gen/wordexp.c	Sun Apr 19 13:51:25 2015	(r281743)
@@ -118,8 +118,10 @@ we_askshell(const char *words, wordexp_t
 	char *nstrings;			/* Temporary for realloc() */
 	char **nwv;			/* Temporary for realloc() */
 	sigset_t newsigblock, oldsigblock;
+	const char *ifs;
 
 	serrno = errno;
+	ifs = getenv("IFS");
 
 	if (pipe2(pdes, O_CLOEXEC) < 0)
 		return (WRDE_NOSPACE);	/* XXX */
@@ -145,7 +147,8 @@ we_askshell(const char *words, wordexp_t
 		    _fcntl(pdes[1], F_SETFD, 0)) < 0)
 			_exit(1);
 		execl(_PATH_BSHELL, "sh", flags & WRDE_UNDEF ? "-u" : "+u",
-		    "-c", "eval \"$1\";eval \"wordexp $2\"", "",
+		    "-c", "IFS=$1;eval \"$2\";eval \"wordexp $3\"", "",
+		    ifs != NULL ? ifs : " \t\n",
 		    flags & WRDE_SHOWERR ? "" : "exec 2>/dev/null", words,
 		    (char *)NULL);
 		_exit(1);


More information about the svn-src-all mailing list