In execve(2), attempt to create a realpath buffer for the executable
and place the resulting string on the stack as an auxval. The two
main reasons why the attempt can fail are if the program is started
inside an unlinked directory or if the buffer exceeds PATH_MAX. libc
will be able to find this auxval and provide it in an uncoming
getexecpath(3) API.
ok kettenis beck kirill
libssl: avoid narrowing return value in dtls1_ctrl
dtls1_ctrl() and ssl3_ctrl() return long, but the intermediate return
value was stored in an int. Use long to avoid truncating values returned
by ssl3_ctrl().
CID 497395
From Yuji Hashimoto
ok tb jsing
Make CRYPTO_cleanup_all_ex_data() a compatibility no-op
The ex_data callback registry is process-wide, but this API could free
it while other threads were still using libcrypto, resulting in a
use-after-free.
Retain the public symbol as a compatibility no-op and mark it
deprecated. Move the actual cleanup to an internal function called by
OPENSSL_cleanup(). Replace the in-tree callers with OPENSSL_cleanup()
at final shutdown to preserve cleanup behavior and coverage.
Document both APIs and the requirement that OPENSSL_cleanup() only be
called after all threads and components have stopped using libcrypto.
ok tb
Delay starting HTML output until we are sure that we have some data
to offer to the user, either from a manual page file that can actually
be opened or at least a list of links to pages matching the user's query.
When no information whatsoever can be accessed, always return
HTTP 400 Bad Request (e.g. for an unsupported, nonexistent, or unreadable
path or an invalid architecture) or HTTP 500 Internal Server Error (e.g.
for a system call failure, an inaccessible or invalid configuration file,
an inaccessible directory, or a corrupt database).
This also prepares for pledge(2)/unveil(2) improvements by making it
possible to invoke these system calls after open(2)ing the chosen
manual page file.
Clamp numeric arguments of terminal escape sequences to an arbitrary value of
100,000. The existing logic would happily process as many digits as provided,
which could make the values wraparound at 2**32, or be considered as negative
values if cast to a signed type, leading to incorrect processing.
Bug report by Acts1631.
collapse ranges of community ids when printing pvlan info.
mostly borrowed from the code that collapses ranges of vids when
printing the allowed vlan tags on ports.
sndiod: Unify "midithru/N" and "midi/N" ports
Add the -p option to register MIDI ports that programs can
access as "midi/<name>". They have the same functionnality as the
current "midithru/<number>" ports. The default MIDI port becomes
simply "midi/default", which is automatically created (similarly
to the default audio device).
The "midithru/<number>" syntax is still accepted for backwards
compatibility.
Fix a segfault that bluhm@ found on his i386 regress machine.
Even in the "out:" code path of the escape sequence parser,
for rval == ESCAPE_SPECIAL, some of the parsing results are
still used for error reporting purposes, specifically to
distinguish valid and invalid character names.
So, when parsing fails so badly that there is no name whatsoever,
it is not sufficient to bail out via "goto out;" but in addition,
we must make sure that the return value does not remain ESCAPE_SPECIAL.
However, other return values must remain intact even in case of
extremely bad parsing errors. For example, an \A escape sequence
still qualifies as an ESCAPE_EXPAND sequence and must expand
to the string "0" even if it lacks any argument whatsoever.
Move /tmp clearing earlier in /etc/rc
Moving pruning above relinking and early daemon startup to be able
to clear everything old without removing entries that are in use.
The goals are:
1) free up at least one inode, because mkstemp needs at least one
2) free up a few more, just in case. We settled on 50.
3) With an inode freed up for mktemp, create a directory and move all the
deleteable files into that directory and remove it asyncronously.
The first two goals were very fiddly to get right.
Much help and discussion with deraadt@ plus dlg@ and kn@
ok for an earlier diff from kn@
relayctl: rework show output and add -v flag
- Added -v flag for more detailed output.
- Replaced tab separators with space-padded, truncated columns (%.Ns) for
stable alignment.
- Added a new "Checks" column for host checks (N/N), replacing the total: N/N
checks sub-line.
- Shortened redirect to rdr in the Type column to stay under 80 columns.
- Without -v: compact status (down); with -v: error inlined (down (tcp connect
timeout)).
- Table status shows host count (N hosts) only with -v.
- retries sub-line only appears with show hosts -v.
- show hosts no longer lists tables; use show summary for that.
OK kirill@
libssl: fix API misuse in legacy finished handling
This looks like a potential out of bounds read or allowing trailing garbage
in peer_finished. It's harmless because CBS_len() is compared against the
s->s3->hs.peer_finished_len a few lines up, thus it is only cosmetic.
discussed with jsing
ok kenjiro
uaudio: Ignore transfer completions if audio is halted
When audio is halted, the pipes are closed and the corresponding usb
transfer completion functions are called immediately. For certain
devices the status of the feedback pipe is USBD_NORMAL_COMPLETION,
which triggers further processing of the received data.
Fixes the harmless "uaudio0: sync play xfer, err = 6" messages on
the console.
Disable the -fomit-frame-pointer optimisation by default.
The frame-pointer is needed to have good backtraces from e.g ddb or
ptrace / btrace. Many other distros did something like this as well since
the benfit of havving easy to work with backtraces outweights the little
overall speedup gained by having an extra register.
Also disable -mno-omit-leaf-frame-pointer by default on llvm.
OK kettenis@