Date: Tue, 07 Jan 2003 18:42:54 GMT From: Tor.Egge@cvsup.no.freebsd.org To: roam@ringlet.net Cc: freebsd-bugs@FreeBSD.ORG Subject: Re: bin/45349: /bin/sh and 8-bit characters Message-ID: <20030107184254E.tegge@cvsup.no.freebsd.org> In-Reply-To: <200301071220.h07CK3qv089807@freefall.freebsd.org> References: <200301071220.h07CK3qv089807@freefall.freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
> So it seems it is still not quite OK on -STABLE.
With a minor tweak to the test program, the problem is still
reproducable on 5.0-CURRENT.
--- /tmp/shtest.pl Tue Jan 7 15:44:19 2003
+++ /tmp/shtest2.pl Tue Jan 7 19:31:05 2003
@@ -6,3 +6,3 @@
$c = chr($x);
- system("echo blah > \"./$c\""); # calls /bin/sh
+ system("A=\"$c\"; echo blah > \"./\$A\""); # calls /bin/sh
unless (-e $c) {
Revision 1.39 of expand.c changes the initialization of the local
variable "quotes" in argstr() but doesn't update similar code in
exptilde(), expari(), expbackq() and evalvar().
Index: expand.c
===================================================================
RCS file: /home/ncvs/src/bin/sh/expand.c,v
retrieving revision 1.40
diff -u -r1.40 expand.c
--- expand.c 26 Dec 2002 14:28:54 -0000 1.40
+++ expand.c 7 Jan 2003 15:33:29 -0000
@@ -278,7 +278,7 @@
char c, *startp = p;
struct passwd *pw;
char *home;
- int quotes = flag & (EXP_FULL | EXP_CASE);
+ int quotes = flag & (EXP_FULL | EXP_CASE | EXP_REDIR);
while ((c = *p) != '\0') {
switch(c) {
@@ -369,7 +369,7 @@
char *p, *start;
int result;
int begoff;
- int quotes = flag & (EXP_FULL | EXP_CASE);
+ int quotes = flag & (EXP_FULL | EXP_CASE | EXP_REDIR);
int quoted;
@@ -436,7 +436,7 @@
int startloc = dest - stackblock();
char const *syntax = quoted? DQSYNTAX : BASESYNTAX;
int saveherefd;
- int quotes = flag & (EXP_FULL | EXP_CASE);
+ int quotes = flag & (EXP_FULL | EXP_CASE | EXP_REDIR);
INTOFF;
saveifs = ifsfirst;
@@ -635,7 +635,7 @@
int startloc;
int varlen;
int easy;
- int quotes = flag & (EXP_FULL | EXP_CASE);
+ int quotes = flag & (EXP_FULL | EXP_CASE | EXP_REDIR);
varflags = *p++;
subtype = varflags & VSTYPE;
- Tor Egge
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030107184254E.tegge>
