svn commit: r280919 - head/lib/libc/gen
Jilles Tjoelker
jilles at FreeBSD.org
Tue Mar 31 20:51:02 UTC 2015
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);
More information about the svn-src-head
mailing list