Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 31 Mar 2015 20:51:02 +0000 (UTC)
From:      Jilles Tjoelker <jilles@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r280919 - head/lib/libc/gen
Message-ID:  <201503312051.t2VKp27P004915@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jilles
Date: Tue Mar 31 20:51:01 2015
New Revision: 280919
URL: https://svnweb.freebsd.org/changeset/base/280919

Log:
  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.
  
  MFC after:	1 week

Modified:
  head/lib/libc/gen/wordexp.c

Modified: head/lib/libc/gen/wordexp.c
==============================================================================
--- head/lib/libc/gen/wordexp.c	Tue Mar 31 20:03:04 2015	(r280918)
+++ head/lib/libc/gen/wordexp.c	Tue Mar 31 20:51:01 2015	(r280919)
@@ -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);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201503312051.t2VKp27P004915>