Update to nawk-20050424. Fixes several overflow and RE bugs, as well as

preserving $0 in END block.
This commit is contained in:
jdolecek 2005-07-02 18:56:41 +00:00
parent 7e5f8bd1bf
commit e5687f9fff
4 changed files with 15439 additions and 2 deletions

53
dist/nawk/FIXES vendored
View File

@ -25,6 +25,55 @@ THIS SOFTWARE.
This file lists all bug fixes, changes, etc., made since the AWK book
was sent to the printers in August, 1987.
Apr 24, 2005:
modified lib.c so that values of $0 et al are preserved in the END
block, apparently as required by posix. thanks to havard eidnes
for the report and code.
Jan 14, 2005:
fixed infinite loop in parsing, originally found by brian tsang.
thanks to arnold robbins for a suggestion that started me
rethinking it.
Dec 31, 2004:
prevent overflow of -f array in main, head off potential error in
call of SYNTAX(), test malloc return in lib.c, all with thanks to
todd miller.
Dec 22, 2004:
cranked up size of NCHARS; coverity thinks it can be overrun with
smaller size, and i think that's right. added some assertions to b.c
to catch places where it might overrun. the RE code is still fragile.
Dec 5, 2004:
fixed a couple of overflow problems with ridiculous field numbers:
e.g., print $(2^32-1). thanks to ruslan ermilov, giorgos keramidas
and david o'brien at freebsd.org for patches. this really should
be re-done from scratch.
Nov 21, 2004:
fixed another 25-year-old RE bug, in split. it's another failure
to (re-)initialize. thanks to steve fisher for spotting this and
providing a good test case.
Nov 22, 2003:
fixed a bug in regular expressions that dates (so help me) from 1977;
it's been there from the beginning. an anchored longest match that
was longer than the number of states triggered a failure to initialize
the machine properly. many thanks to moinak ghosh for not only finding
this one but for providing a fix, in some of the most mysterious
code known to man.
fixed a storage leak in call() that appears to have been there since
1983 or so -- a function without an explicit return that assigns a
string to a parameter leaked a Cell. thanks to moinak ghosh for
spotting this very subtle one.
Jul 31, 2003:
fixed, thanks to andrey chernov and ruslan ermilov, a bug in lex.c
that mis-handled the character 255 in input. (it was being compared
to EOF with a signed comparison.)
Jul 29, 2003:
fixed (i think) the long-standing botch that included the beginning of
line state ^ for RE's in the set of valid characters; this led to a
@ -204,7 +253,7 @@ Apr 21, 2000:
jon bentley for the test case that found it.
added test in envinit to catch environment "variables" with
names begining with '='; thanks to Berend Hasselman.
names beginning with '='; thanks to Berend Hasselman.
Jul 28, 1999:
added test in defn() to catch function foo(foo), which
@ -441,7 +490,7 @@ May 2, 1996:
some awful behaviors.)
Apr 29, 1996:
replaced uchar by uschar everwhere; apparently some compilers
replaced uchar by uschar everywhere; apparently some compilers
usurp this name and this causes conflicts.
fixed call to time in run.c (bltin); arg is time_t *.

15355
dist/nawk/awk.shar vendored Normal file

File diff suppressed because it is too large Load Diff

BIN
dist/nawk/maketab vendored Executable file

Binary file not shown.

33
dist/nawk/vcvars32.bat vendored Normal file
View File

@ -0,0 +1,33 @@
@echo off
rem
rem Root of Visual Developer Studio Common files.
set VSCommonDir=C:\PROGRA~1\MICROS~3\Common
rem
rem Root of Visual Developer Studio installed files.
rem
set MSDevDir=C:\PROGRA~1\MICROS~3\Common\msdev98
rem
rem Root of Visual C++ installed files.
rem
set MSVCDir=C:\PROGRA~1\MICROS~3\VC98
rem
rem VcOsDir is used to help create either a Windows 95 or Windows NT specific path.
rem
set VcOsDir=WIN95
if "%OS%" == "Windows_NT" set VcOsDir=WINNT
rem
echo Setting environment for using Microsoft Visual C++ tools.
rem
if "%OS%" == "Windows_NT" set PATH=%MSDevDir%\BIN;%MSVCDir%\BIN;%VSCommonDir%\TOOLS\%VcOsDir%;%VSCommonDir%\TOOLS;%PATH%
if "%OS%" == "" set PATH="%MSDevDir%\BIN";"%MSVCDir%\BIN";"%VSCommonDir%\TOOLS\%VcOsDir%";"%VSCommonDir%\TOOLS";"%windir%\SYSTEM";"%PATH%"
set INCLUDE=%MSVCDir%\ATL\INCLUDE;%MSVCDir%\INCLUDE;%MSVCDir%\MFC\INCLUDE;%INCLUDE%
set LIB=%MSVCDir%\LIB;%MSVCDir%\MFC\LIB;%LIB%
set VcOsDir=
set VSCommonDir=