diff options
author | Larry Wall <lwall@jpl-devvax.jpl.nasa.gov> | 1990-03-13 23:33:04 +0000 |
---|---|---|
committer | Larry Wall <lwall@jpl-devvax.jpl.nasa.gov> | 1990-03-13 23:33:04 +0000 |
commit | 63f2c1e106a2635d888c6b582f4c59b5c0ecc7ee (patch) | |
tree | 8f937b14482c666265f81797ebd4f122c8260cfb /doio.c | |
parent | 79a0689e17f959bdb246dc37bbbbfeba4c2b3b56 (diff) | |
download | perl-63f2c1e106a2635d888c6b582f4c59b5c0ecc7ee.tar.gz |
perl 3.0 patch #15 (combined patch)
In patch 13, there was a fix to make the VAR=value construct
in a command force interpretation by the shell. This was botched,
causing an argv list to be occasionally allocated with too small
a size. This problem is hidden on some machines because of
BSD malloc's semantics.
The lib/dumpvar.pl file was missing final 1; which made it
difficult to tell if it loaded right.
The lib/termcap.pl Tgetent subroutine didn't interpret ^x right
due to a missing ord().
In the section of the man page that gives hints for C programmers,
it falsely declared that you can't subscript array values. As of
patch 13, this statement is "inoperative".
The t/op.sleep test assumed that a sleep of 2 seconds would always
return a value of 2 seconds slept. Depending on the load and
the whimsey of the scheduler, it could actually sleep longer than
2 seconds upon occasion. It now allows sleeps of up to 10 seconds.
Diffstat (limited to 'doio.c')
-rw-r--r-- | doio.c | 11 |
1 files changed, 7 insertions, 4 deletions
@@ -1,4 +1,4 @@ -/* $Header: doio.c,v 3.0.1.6 90/03/12 16:30:07 lwall Locked $ +/* $Header: doio.c,v 3.0.1.7 90/03/14 12:26:24 lwall Locked $ * * Copyright (c) 1989, Larry Wall * @@ -6,6 +6,9 @@ * as specified in the README file that comes with the perl 3.0 kit. * * $Log: doio.c,v $ + * Revision 3.0.1.7 90/03/14 12:26:24 lwall + * patch15: commands involving execs could cause malloc arena corruption + * * Revision 3.0.1.6 90/03/12 16:30:07 lwall * patch13: system 'FOO=bar command' didn't invoke sh as it should * @@ -931,6 +934,9 @@ char *cmd; /* see if there are shell metacharacters in it */ + for (s = cmd; *s && isalpha(*s); s++) ; /* catch VAR=val gizmo */ + if (*s == '=') + goto doshell; for (s = cmd; *s; s++) { if (*s != ' ' && !isalpha(*s) && index("$&*(){}[]'\";\\|?<>~`\n",*s)) { if (*s == '\n' && !s[1]) { @@ -942,9 +948,6 @@ char *cmd; return FALSE; } } - for (s = cmd; *s && isalpha(*s); s++) ; /* catch VAR=val gizmo */ - if (*s == '=') - goto doshell; New(402,argv, (s - cmd) / 2 + 2, char*); a = argv; |