mirror of
git://git.code.sf.net/p/cdesktopenv/code
synced 2025-03-09 15:50:02 +00:00
The fixargs() function is invoked when ksh needs to run a script
without a #!/hashbang/path. Instead of letting the kernel invoke a
shell, ksh exfile()s the script itself from sh_main(). In the
forked child, it calls fixargs() to set the argument list in the
environment to the args of the new script, so that 'ps' and
/proc/PID/cmdline show the expected output.
But fixargs() is broken because, on systems other than HP-UX (on
which ksh uses pstat(2)), ksh simply inserts a terminating zero.
The arguments list is not a zero-terminated C string. Unix systems
expect the entire arguments buffer to be zeroed out, otherwise 'ps'
and /proc/*/cmdline will have fragments of previous command lines
in the output.
The Red Hat patch for this bug is:
|
||
---|---|---|
.. | ||
argnod.h | ||
builtins.h | ||
defs.h | ||
edit.h | ||
fault.h | ||
fcin.h | ||
history.h | ||
io.h | ||
jobs.h | ||
lexstates.h | ||
name.h | ||
national.h | ||
nval.h | ||
path.h | ||
regress.h | ||
shell.h | ||
shlex.h | ||
shnodes.h | ||
shtable.h | ||
streval.h | ||
terminal.h | ||
test.h | ||
timeout.h | ||
ulimit.h | ||
variables.h | ||
version.h |