Author:
- Name: Larry Wall
Location: US - United States of America (United States)
To build:
make all
To use:
./wall
# enter some numbers
./wall | some_command
# enter some strings or numbers, depending on command
Try:
./try.sh
You may of course run the commands manually and enter text as you wish. For instance you might try one or both of:
./wall | bc
./wall | cat
and enter some input like:
x*x
2^x
quit # for the cat version
which the script does through a pipeline except that here you can enter more text if you wish, line by line.
Judges’ remarks:
What we found amazing was how the flow of control was transferred between
subroutines. Careful inspection will show that the array of pointers to
functions named vi
refers to functions which seem to not be directly called.
Even so, these pointers to functions are being used as an argument to
signal(3)
(used both with and without an arg - but how?). Can you determine
why this is being done and how it is being exploited?
Some compilers complained about this file, so we changed: =++I
to = ++I
.
Author’s remarks:
No remarks were provided by the author.
Inventory for 1987/wall
Primary files
- wall.c - entry source code
- Makefile - entry Makefile
- wall.orig.c - original source code
- try.sh - script to try entry
Secondary files
- 1987_wall.tar.bz2 - download entry tarball
- README.md - markdown source for this web page
- .entry.json - entry summary and manifest in JSON
- .gitignore - list of files that should not be committed under git
- .path - directory path from top level directory
- index.html - this web page