- Fix retval handling in bin_setopt()
- Don't skip_setuid / skip_setgid. It's not our place to optimize away noops
(that might not even _be_ noops; they might change the saved uid…).
- Remove HAVE_* guard checks around functions that are used unguarded elsewhere.
- Use bsd-setres_id.c from OpenSSH to provide setresuid() / setresgid()
everywhere, and thus simplify the ifdef soup. Fix some preëxisting
bugs in the macro definitions of setuid() (do we still need that one?).
- Fix zwarning() format codes for variadic arguments type safety
- Restored a comment from HEAD
- Fix failure modes around initgroups()
- Compared privilege restoration code with OpenSSH's permanently_drop_uid() and
updated as needed
- Add E01 PRIVILEGED sanity checks
Some gcc header files are difficult for the signames2.awk
script to process, so if the preprocessor is gcc give the
option -P to strip out the unwanted additions.
Variables are now associated with the module that declares them, being
initialised and saved/restored there. However, as many variables are
used for communication between modules, many of them are set in multiple
places, so the assignment is ambiguous.
Generate the patch level using `git describe` rather than relying on the
CVS $Revision$. Need to use the `--tags` option, since currently there
are no annotated tags. The `--long` option should be used so that the
output will always be in the 'tag-commits-hash' format rather than just
naming a tag when that would fully describe the current commit.
Since changes to the patchlevel could now be caused by changes to any
file, force the rule to be called every time that `make` is run. Only
update the file when there are actually changes to prevent unnecessary
rebuilding of other build products (currently just `params.o` and
`zsh`).
Src/zsh.mdd: Allow options to be specified on the zsh command line
in the form of GNU-style long options. Also handle --version
and --help. Do not permit extra option letters to be stacked
after `-whatever-' (they used to be ignored). Exit if the
command line specifies an option name that doesn't exist.