| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
(cherry picked from commit 309d899507adc62de5a6c37c32386898b44895fd)
|
|
|
|
|
|
|
|
|
| |
The previous method allowed memory management to interact with signal
handlers, causing occasional crashes on some system.
Instead, use a simple pre-allocated buffer and raw system calls.
(cherry picked from commit e5cd2dd980302f328d232d933f646c3dc02828bf)
|
|
|
|
| |
(cherry picked from commit 2a7945a900c8a1b1866ad31ee5e95db5b0ddb50a)
|
|
|
|
| |
Mitigates CVE-2021-45444
|
| |
|
|
|
|
|
|
|
|
| |
* Pass RGID instead of passwd GID to initgroups()
* Clean up #ifdefs, avoid unnecessary checks
* Flatten conditions
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- 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
|
| |
|
| |
|
|
|
|
|
| |
The flags need resetting for this branch otherwise e.g. command
substitution with non-zero status doesn't cause exit.
|
|
|
|
|
| |
The queueing added in execarith() in 45083 is reverted since the callee
does this now.
|
|
|
|
| |
change.
|
| |
|
|
|
|
|
| |
Otherwise, a signal handler might create files while the temporary umask
is in effect.
|
| |
|
| |
|
|
|
|
| |
potential match.
|
|
|
|
|
|
| |
Assignments after the first were not recognised as such as without
the full parser the state didn't return to command position.
Fix this in bufferwords() and the completion miniparser.
|
| |
|
|
|
|
| |
This will let error messages include long integers.
|
|
|
|
|
| |
Otherwise we could get re-entrancy in memory functions when
setting variables.
|
|
|
|
|
| |
try_tryflag isn't assigned anywhere, other than at initialization and by these
lines, so we don't need to save and restore the value.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
On Linux, linking to mktemp() generates the following warning:
.
utils.o: In function `gettempname':
./Src/utils.c:2229: warning: the use of `mktemp' is dangerous, better use `mkstemp' or `mkdtemp'
The warning cannot be disabled.
Work around that by using mkstemp() instead, and massage its output so
it behaves like mktemp(). See the new comment for further details.
|
|
|
|
| |
"from_where" parameter. No functional change.
|
|
|
|
| |
zsh-5.3.1-182-gd7110d8f0).
|
|
|
|
| |
This could cause a signal received during $(...) to corrupt memory.
|
|
|
|
|
| |
Otherwise forms of argument allowed by POSIX are interpreted as
options instead.
|
|
|
|
| |
As the shortest match is preferred, zero-length matches beat any other.
|
| |
|
|
|
|
| |
Dashes could cause problems in directory prefixes.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
This was in the glob qualifier and variable code but got missed out
of the separate history modifier function.
|
|
|
|
|
|
|
| |
If we can't grab the terminal in interactive mode, give
up after 100 goes. This is a completely arbitrary choice;
we simply don't know what in the system could change the
result of looping further.
|
|
|
|
|
|
|
| |
Indentatin in moveto was broken by 3eea35d0 (my bad), making it
difficult to read. This commit reverts it to what it used ot be.
While at it, fix indentation in a few other places in the same
file.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When TTY disappears and there is at least one fd watcher, raw_getbyte() can
enter an infinite loop where it keeps calling poll() over and over again.
To reproduce, open a terminal, start zsh and type this:
rm -f /tmp/fifo
mkfifo /tmp/fifo
exec 3<>/tmp/fifo
do-nothing() {}
zle -F 3 do-nothing
Then make TTY disappear. For example, kill the parent with `kill -9 $PPID`
and close the terminal window if it's still there. Observe that zsh is
consiming 100% CPU. Note that do-nothing() never gets called.
This patch makes the poll() loop in raw_getbyte() terminate when TTY is
signalling POLLHUP. This makes the behavior consistent with the case where
TTY disappears while no fd watchers are installed.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
"foo=bar builtin" inside a function lost any variable from
enclosing scope.
|
|
|
|
| |
Documentation and test.
|
| |
|
|
|
|
| |
Known to cause warnings in gawk 5.
|
| |
|
| |
|