openbsd
10 months agoPrint the proper file name in case we fail to allocate a "path" extended header
jca [Thu, 21 Dec 2023 01:20:54 +0000 (01:20 +0000)]
Print the proper file name in case we fail to allocate a "path" extended header

Use name, not ln_name.  Pasto introduced in previous.

10 months agoClean up includes in cms_pwri.c
tb [Wed, 20 Dec 2023 18:38:19 +0000 (18:38 +0000)]
Clean up includes in cms_pwri.c

10 months agoupdate to nsd 4.8.0
florian [Wed, 20 Dec 2023 17:29:01 +0000 (17:29 +0000)]
update to nsd 4.8.0
OK sthen

10 months agointroduce log_ntp_addr() and use it where applicable, avoids a null
otto [Wed, 20 Dec 2023 15:36:36 +0000 (15:36 +0000)]
introduce log_ntp_addr() and use it where applicable, avoids a null
pointer deref in constraint.c reported by bluhm@; ok millert@

10 months agocreate a stub for pinsyscalls(2)
deraadt [Wed, 20 Dec 2023 14:54:29 +0000 (14:54 +0000)]
create a stub for pinsyscalls(2)

10 months agothere is a super-alignment between btext and text, this creates a hole.
deraadt [Wed, 20 Dec 2023 14:52:07 +0000 (14:52 +0000)]
there is a super-alignment between btext and text, this creates a hole.
Twice, I have seen the sigtramp mapping land inside that hole.  This
causes grief for the upcoming pinsyscalls() work which operates on
address space ranges.  But the micro-optimization is silly.
ok kettenis

10 months agoFor strange reasons which made sense at the time, the text segment was
deraadt [Wed, 20 Dec 2023 14:50:08 +0000 (14:50 +0000)]
For strange reasons which made sense at the time, the text segment was
placed head of the btext (boot.text) segment.  (the boot.text segment is
"unmapped" after initization, as a self-protection mechanism).  this meant
the LOAD's virtual addresses were not in sequence, which clearly isn't
what we intended.

10 months agoUse BIO_indent() for indentation in tasn_prn.c
tb [Wed, 20 Dec 2023 14:26:47 +0000 (14:26 +0000)]
Use BIO_indent() for indentation in tasn_prn.c

Using a loop to print pieces of a static buffer containing 20 spaces to
indent things is just silly. Even sillier is making this buffer const
without looking what it's actually used for... There is BIO_indent() or
BIO_printf() that can handle "%*s".

Add a length check to preserve behavior since BIO_indent() succeeds for
negattive indent.

However, peak silliness must be how BIO_dump_indent_cb() indents things.
That's for another day.

ok jsing

10 months agoRename impl into engine
tb [Wed, 20 Dec 2023 14:15:19 +0000 (14:15 +0000)]
Rename impl into engine

10 months agoRename inl to in_len throughout the file
tb [Wed, 20 Dec 2023 14:14:39 +0000 (14:14 +0000)]
Rename inl to in_len throughout the file

10 months agoRename outl into out_len throughout the file
tb [Wed, 20 Dec 2023 14:13:07 +0000 (14:13 +0000)]
Rename outl into out_len throughout the file

10 months agoTweak a comment a bit
tb [Wed, 20 Dec 2023 14:11:41 +0000 (14:11 +0000)]
Tweak a comment a bit

10 months agoRemove block_mask from EVP_CIPHER_CTX
tb [Wed, 20 Dec 2023 14:10:03 +0000 (14:10 +0000)]
Remove block_mask from EVP_CIPHER_CTX

The block mask is only used in EVP_{De,En}cryptUpdate(). There's no need to
hang it off the EVP_CIPHER_CTX since it is easy to compute and validate.

ok joshua jsing

10 months agoAdd some sanity checks for EVP_CIPHER_meth_new()
tb [Wed, 20 Dec 2023 14:05:58 +0000 (14:05 +0000)]
Add some sanity checks for EVP_CIPHER_meth_new()

Ensure that the nid and key length are non-negative and that the block
size is one of the three sizes 1, 8, or 16 supported by the EVP subsystem.

ok joshua jsing

10 months agobtrace: add support for hex and octal values.
dv [Wed, 20 Dec 2023 14:00:17 +0000 (14:00 +0000)]
btrace: add support for hex and octal values.

Changes number tokenizing and parsing to support hex & octal values.
Does not address other lexer issues (e.g. $0x1) to close gaps with
bpftrace.

OK claudio@

10 months agoMerge p_open and p_seal into p_legacy
tb [Wed, 20 Dec 2023 13:52:17 +0000 (13:52 +0000)]
Merge p_open and p_seal into p_legacy

discussed with jsing

10 months agoFold p_dec.c and p_enc.c into a new p_legacy.c
tb [Wed, 20 Dec 2023 13:46:05 +0000 (13:46 +0000)]
Fold p_dec.c and p_enc.c into a new p_legacy.c

discussed with jsing

10 months agoDon't create an sd(4) larger than what the namespace will allow.
krw [Wed, 20 Dec 2023 13:37:25 +0000 (13:37 +0000)]
Don't create an sd(4) larger than what the namespace will allow.

A namespace must satisfy

size (nsze) >= capacity (ncap) >= utilization (nuse)

Use ncap for the sd(4) size when THINP is set and ncap < nsze.

Tweak some variable names in passing to make code clearer.

ok dlg@

10 months agoLess confusing variable names in EVP_PKEY_{de,en}crypt_old()
tb [Wed, 20 Dec 2023 13:34:47 +0000 (13:34 +0000)]
Less confusing variable names in EVP_PKEY_{de,en}crypt_old()

ok jsing

10 months agoMODPY_PYBUILD: use "bootstrap" instead of "Yes"
sthen [Wed, 20 Dec 2023 13:30:51 +0000 (13:30 +0000)]
MODPY_PYBUILD: use "bootstrap" instead of "Yes"

10 months agoImprove local variable names
tb [Wed, 20 Dec 2023 11:33:52 +0000 (11:33 +0000)]
Improve local variable names

Rename the slightly awkward buf_offset into partial_len and rename
buf_avail into partial_needed to match.

suggested by jsing

10 months agoRename buf_len into partial_len in EVP_CIPHER_CTX
tb [Wed, 20 Dec 2023 11:31:17 +0000 (11:31 +0000)]
Rename buf_len into partial_len in EVP_CIPHER_CTX

suggested by jsing

10 months agoClean up EVP_DecryptFinal_ex()
tb [Wed, 20 Dec 2023 11:01:34 +0000 (11:01 +0000)]
Clean up EVP_DecryptFinal_ex()

Rework the code to use the usual variable names, return early if we
have block size 1 and unindent the remainder of the code for block
sizes 8 and 16. Rework the padding check to be less acrobatic and
copy the remainder of the plain text into out using memcpy() rather
than a for loop.

input/ok jsing

10 months agoClean up EVP_EncryptFinal_ex()
tb [Wed, 20 Dec 2023 10:42:43 +0000 (10:42 +0000)]
Clean up EVP_EncryptFinal_ex()

This switches to the variable names used in other functions, adds a
reminder to add a missing length check and uses memset for the padding.

ok jsing

10 months agoSimplify EVP_DecryptUpdate() a bit
tb [Wed, 20 Dec 2023 10:35:25 +0000 (10:35 +0000)]
Simplify EVP_DecryptUpdate() a bit

This time the block size is called b and there's some awful length
fiddling with fix_len, which until recently also served as store
for the return value for do_cipher()...

If we land on a block boundary, we keep the last block decrypted and
don't count it as part of the output. So in the next call we need to
feed it back in. Feeding it back in counts as output written this time
around, so instead of remembering that we need to adjust outl, keep a
tally of the bytes written. This way we can also do some overflow and
underflow checking.

ok jsing

10 months agoRemove commented out version of EVP_SealUpdate()
tb [Wed, 20 Dec 2023 10:15:30 +0000 (10:15 +0000)]
Remove commented out version of EVP_SealUpdate()

10 months agoRemove preprocessor mess in EVP_PKEY_{de,en}crypt_old()
tb [Wed, 20 Dec 2023 10:14:14 +0000 (10:14 +0000)]
Remove preprocessor mess in EVP_PKEY_{de,en}crypt_old()

This was done the worst possible way. It would be much simpler to invert
the logic and use a single #ifdef. jsing prefers keeping the current
logic and suggested we ditch the preprocessor mess altogether.

ok jsing, claudio agreed with the initial diff

10 months agovio(4): checksum offloading for TCP/UDP in IPv6 Packets
jan [Wed, 20 Dec 2023 09:51:06 +0000 (09:51 +0000)]
vio(4): checksum offloading for TCP/UDP in IPv6 Packets

ok sf@

10 months agoRemove iwx_wait_tx_queues_empty(); unused with current firmware versions
stsp [Wed, 20 Dec 2023 07:33:32 +0000 (07:33 +0000)]
Remove iwx_wait_tx_queues_empty(); unused with current firmware versions

Current firmware supplies a flush-command response which makes it
unnecessary to poll for empty queues after sending the flush command.

Based on a patch by Mikhail Pchelin

10 months agoEnsure that iwm/iwx devices announce VHT capabilities in probe requests.
stsp [Wed, 20 Dec 2023 07:32:05 +0000 (07:32 +0000)]
Ensure that iwm/iwx devices announce VHT capabilities in probe requests.

The previous code did not update the per-band-data length field,
resulting in firmware skipping the VHT information element in the
probe-request frame template.

Patch by Mikhail Pchelin

10 months agoRemove a changelog from 1991
tb [Wed, 20 Dec 2023 06:30:04 +0000 (06:30 +0000)]
Remove a changelog from 1991

10 months agoDES_random_key() sets the key
tb [Wed, 20 Dec 2023 06:28:04 +0000 (06:28 +0000)]
DES_random_key() sets the key

There's no need to have 60 lines of license for 4 lines of actual code.
Move DES_random_key() to set_key.c.

10 months agoRemove commented-out code
tb [Wed, 20 Dec 2023 06:22:27 +0000 (06:22 +0000)]
Remove commented-out code

10 months agobtrace: "too long line" -> "line too long"
dv [Wed, 20 Dec 2023 01:38:46 +0000 (01:38 +0000)]
btrace: "too long line" -> "line too long"

ok claudio@

10 months agoDon't unset the SA tag set by ipsec_sa_tag in ipsec_sa_iface.
tobhe [Wed, 20 Dec 2023 00:34:13 +0000 (00:34 +0000)]
Don't unset the SA tag set by ipsec_sa_tag in ipsec_sa_iface.
Fixes SA tagging and a possible leak.

from markus@

10 months agospelling; ok markus@
jsg [Wed, 20 Dec 2023 00:06:25 +0000 (00:06 +0000)]
spelling; ok markus@

10 months agoRelease inpcb mutex while calling sbwait().
bluhm [Tue, 19 Dec 2023 21:34:22 +0000 (21:34 +0000)]
Release inpcb mutex while calling sbwait().

As sbwait() may sleep, holding any mutex is not allowed.  Call
pru_unlock() before sbwait() in soreceive().

Bug spotted by sashan@; OK sashan@ mvs@

10 months agoInitialize `sc_outputtask' before interface attachment. if_alloc_sadl()
mvs [Tue, 19 Dec 2023 20:34:10 +0000 (20:34 +0000)]
Initialize `sc_outputtask' before interface attachment. if_alloc_sadl()
has sleep point, so the uninitialized `sc_outputtask` could be accessed
through ioctl(2) interface.

ok sashan bluhm

10 months agostatic binary setting a table, or dynamic binary trying to do what
deraadt [Tue, 19 Dec 2023 19:39:52 +0000 (19:39 +0000)]
static binary setting a table, or dynamic binary trying to do what
ld.so already did, will both be EPERM

10 months agoinclude KTRFAC_PINSYSCALL in the ktrace options
deraadt [Tue, 19 Dec 2023 16:31:50 +0000 (16:31 +0000)]
include KTRFAC_PINSYSCALL in the ktrace options

10 months agowhitespaces
deraadt [Tue, 19 Dec 2023 16:13:22 +0000 (16:13 +0000)]
whitespaces

10 months agoadd a malloc type for pinsyscall arrays
deraadt [Tue, 19 Dec 2023 14:40:04 +0000 (14:40 +0000)]
add a malloc type for pinsyscall arrays

10 months agoMove constraints files to the etc set
tb [Tue, 19 Dec 2023 13:50:19 +0000 (13:50 +0000)]
Move constraints files to the etc set

These are config files and once modified they should not be overwritten
if they have local changes.

ok deraadt job

10 months agoShow the RTR protocol version in the `bgpctl show rtr` output.
claudio [Tue, 19 Dec 2023 10:32:20 +0000 (10:32 +0000)]
Show the RTR protocol version in the `bgpctl show rtr` output.

Knowing the version is essential to understand if ASPA PDUs are included
or not.
OK tb@

10 months agoAdd markers
job [Tue, 19 Dec 2023 08:10:19 +0000 (08:10 +0000)]
Add markers

OK tb@

10 months ago- new sentence, new line
jmc [Tue, 19 Dec 2023 07:24:42 +0000 (07:24 +0000)]
- new sentence, new line
- zap an unused Pp

10 months agoA small cleanup of malloc_bytes(), getting rid of a goto and a tiny
otto [Tue, 19 Dec 2023 06:59:28 +0000 (06:59 +0000)]
A small cleanup of malloc_bytes(), getting rid of a goto and a tiny
bit of optimization; ok tb@ asou@

10 months agosync
deraadt [Tue, 19 Dec 2023 06:59:17 +0000 (06:59 +0000)]
sync

10 months agothe 4th argument of pinsyscalls() is now "number of pin elements",
deraadt [Tue, 19 Dec 2023 06:58:36 +0000 (06:58 +0000)]
the 4th argument of pinsyscalls() is now "number of pin elements",
not "size of the storage of the pin elements"

10 months agosort -C, and add to usage(); ok djm
jmc [Tue, 19 Dec 2023 06:57:34 +0000 (06:57 +0000)]
sort -C, and add to usage(); ok djm

10 months agopinsyscalls(2) has changed a little bit, and I can provide more advice
deraadt [Tue, 19 Dec 2023 06:57:12 +0000 (06:57 +0000)]
pinsyscalls(2) has changed a little bit, and I can provide more advice
for how it is used (in ld.so, it's not like anyone else can call it).
Also document the errors..

10 months agocorrect section numbers; from Ed Maste
djm [Tue, 19 Dec 2023 06:41:14 +0000 (06:41 +0000)]
correct section numbers; from Ed Maste

10 months agocorrect alignment placement
deraadt [Tue, 19 Dec 2023 06:27:45 +0000 (06:27 +0000)]
correct alignment placement

10 months agosoreceive() must not hold mutex when calling sblock().
bluhm [Tue, 19 Dec 2023 01:11:21 +0000 (01:11 +0000)]
soreceive() must not hold mutex when calling sblock().

In my recent commit I missed that sblock() may sleep while soreceive()
holds the incpb mutex.  Call pru_lock() after sblock().

Reported-by: syzbot+f79c896ec019553655a0@syzkaller.appspotmail.com
Reported-by: syzbot+08b6f1102e429b2d4f84@syzkaller.appspotmail.com
OK mvs@

10 months agoRephrase some warnings related to Manifests
job [Mon, 18 Dec 2023 23:42:20 +0000 (23:42 +0000)]
Rephrase some warnings related to Manifests

Feedback from Tom Harrison (APNIC)

with and OK tb@

10 months agocmac: use block_size rather than bl
tb [Mon, 18 Dec 2023 21:15:00 +0000 (21:15 +0000)]
cmac: use block_size rather than bl

This is purely mechanical apart from a single line wrap.

10 months agocorrect section the SYS_kbind syscall pin record goes into
deraadt [Mon, 18 Dec 2023 17:19:07 +0000 (17:19 +0000)]
correct section the SYS_kbind syscall pin record goes into
noticed by gnezdo

10 months agoAdd a family argument to host(). This allows us to force a specific address
martijn [Mon, 18 Dec 2023 16:58:26 +0000 (16:58 +0000)]
Add a family argument to host(). This allows us to force a specific address
family for source-address, which must be in line with the destination
address.

OK jca@

10 months agoFix copy-paste error for setting source-address in trap receiver.
martijn [Mon, 18 Dec 2023 16:56:01 +0000 (16:56 +0000)]
Fix copy-paste error for setting source-address in trap receiver.

OK jca@

10 months agomatch flag type (s/int/u_int)
djm [Mon, 18 Dec 2023 15:58:56 +0000 (15:58 +0000)]
match flag type (s/int/u_int)

10 months agoregress test for agent PKCS#11-backed certificates
djm [Mon, 18 Dec 2023 14:50:08 +0000 (14:50 +0000)]
regress test for agent PKCS#11-backed certificates

10 months agoregress test for constrained PKCS#11 keys
djm [Mon, 18 Dec 2023 14:49:39 +0000 (14:49 +0000)]
regress test for constrained PKCS#11 keys

10 months agoopenssh-9.6
djm [Mon, 18 Dec 2023 14:48:44 +0000 (14:48 +0000)]
openssh-9.6

10 months agossh-agent: record failed session-bind attempts
djm [Mon, 18 Dec 2023 14:48:08 +0000 (14:48 +0000)]
ssh-agent: record failed session-bind attempts

Record failed attempts to session-bind a connection and refuse signing
operations on that connection henceforth.

Prevents a future situation where we add a new hostkey type that is not
recognised by an older ssh-agent, that consequently causes session-bind
to fail (this situation is only likely to arise when people mix ssh(1)
and ssh-agent(1) of different versions on the same host). Previously,
after such a failure the agent socket would be considered unbound and
not subject to restriction.

Spotted by Jann Horn

10 months agoban user/hostnames with most shell metacharacters
djm [Mon, 18 Dec 2023 14:47:44 +0000 (14:47 +0000)]
ban user/hostnames with most shell metacharacters

This makes ssh(1) refuse user or host names provided on the
commandline that contain most shell metacharacters.

Some programs that invoke ssh(1) using untrusted data do not filter
metacharacters in arguments they supply. This could create
interactions with user-specified ProxyCommand and other directives
that allow shell injection attacks to occur.

It's a mistake to invoke ssh(1) with arbitrary untrusted arguments,
but getting this stuff right can be tricky, so this should prevent
most obvious ways of creating risky situations. It however is not
and cannot be perfect: ssh(1) has no practical way of interpreting
what shell quoting rules are in use and how they interact with the
user's specified ProxyCommand.

To allow configurations that use strange user or hostnames to
continue to work, this strictness is applied only to names coming
from the commandline. Names specified using User or Hostname
directives in ssh_config(5) are not affected.

feedback/ok millert@ markus@ dtucker@ deraadt@

10 months agostricter handling of channel window limits
djm [Mon, 18 Dec 2023 14:47:20 +0000 (14:47 +0000)]
stricter handling of channel window limits

This makes ssh/sshd more strict in handling non-compliant peers that
send more data than the advertised channel window allows. Previously
the additional data would be silently discarded. This change will
cause ssh/sshd to terminate the connection if the channel window is
exceeded by more than a small grace allowance.

ok markus@

10 months agoMake it possible to load certs from PKCS#11 tokens
djm [Mon, 18 Dec 2023 14:46:56 +0000 (14:46 +0000)]
Make it possible to load certs from PKCS#11 tokens

Adds a protocol extension to allow grafting certificates supplied by
ssh-add to keys loaded from PKCS#11 tokens in the agent.

feedback/ok markus@

10 months agoapply destination constraints to all p11 keys
djm [Mon, 18 Dec 2023 14:46:12 +0000 (14:46 +0000)]
apply destination constraints to all p11 keys

Previously applied only to the first key returned from each token.

ok markus@

10 months agoadd "ext-info-in-auth@openssh.com" extension
djm [Mon, 18 Dec 2023 14:45:49 +0000 (14:45 +0000)]
add "ext-info-in-auth@openssh.com" extension

This adds another transport protocol extension to allow a sshd to send
SSH2_MSG_EXT_INFO during user authentication, after the server has
learned the username that is being logged in to.

This lets sshd to update the acceptable signature algoritms for public
key authentication, and allows these to be varied via sshd_config(5)
"Match" directives, which are evaluated after the server learns the
username being authenticated.

Full details in the PROTOCOL file

10 months agoimplement "strict key exchange" in ssh and sshd
djm [Mon, 18 Dec 2023 14:45:17 +0000 (14:45 +0000)]
implement "strict key exchange" in ssh and sshd

This adds a protocol extension to improve the integrity of the SSH
transport protocol, particular in and around the initial key exchange
(KEX) phase.

Full details of the extension are in the PROTOCOL file.

with markus@

10 months agoFix race between ifconfig destroy and ARP timer.
bluhm [Mon, 18 Dec 2023 13:30:44 +0000 (13:30 +0000)]
Fix race between ifconfig destroy and ARP timer.

After if_detach() has called if_remove(), if_get() will return NULL.
Before if_detach() grabs the net lock, ARP timer can still run.  In
this case arptfree() should just return, instead of triggering an
assertion because ifp is NULL.  The ARP route will be deleted later
when in_ifdetach() calls in_purgeaddr().

OK kn@ mvs@ claudio@

10 months agoCheck if calloc calls succeeded; ok millert@
otto [Mon, 18 Dec 2023 13:23:52 +0000 (13:23 +0000)]
Check if calloc calls succeeded; ok millert@

10 months agoClean up EVP_PBE_CipherInit() a little
tb [Mon, 18 Dec 2023 13:12:43 +0000 (13:12 +0000)]
Clean up EVP_PBE_CipherInit() a little

This is mostly stylistic cleanup, making the control flow a bit more
obvious. There's one user-visible change: we no longer go out of our
way to provide info about the unknown algorithm. The nid is enough.

ok joshua jsing

10 months agoRun bind(2) system call in parallel.
bluhm [Mon, 18 Dec 2023 13:11:20 +0000 (13:11 +0000)]
Run bind(2) system call in parallel.

For protocols that care about locking, use the shared net lock to
call sobind().  Use the per socket rwlock together with shared net
lock.  This affects protocols UDP, raw IP, and divert.  Move the
inpcb mutex locking into soreceive(), it is only used there.  Add
a comment to describe the current inmplementation of inpcb locking.

OK mvs@ sashan@

10 months agobump version
benno [Mon, 18 Dec 2023 09:51:06 +0000 (09:51 +0000)]
bump version

10 months agoFix two memory leaks:
martijn [Mon, 18 Dec 2023 09:42:57 +0000 (09:42 +0000)]
Fix two memory leaks:
- MIB_snmpInReadOnlys was tried to be registered twice, leading to a leak
  of the second instance. Prevent this mistake in the future by making a
  double registration fatal.
- The response buffer is owned by the backend, so the backend must also
  free it.

OK tb@

10 months agoRemove EVP_MD_meth_*() dependency
tb [Mon, 18 Dec 2023 06:06:57 +0000 (06:06 +0000)]
Remove EVP_MD_meth_*() dependency

This broken API was added for Erlang's otp-test-engine which was disabled
for LibreSSL without explanation shortly afterward. So we can remove this
hazard again.

Unfortunately, libfido2 started using EVP_MD_meth_dup(), but for no good
reason: they dup static data into a buffer that is passed unmodified to
EVP_PKEY_CTX_set_signature_md() only to be freed right after. This makes
no sense.

Rework this and the ifdefery to make it clear that it is OpenSSL who broke
API contracts (again), not LibreSSL.

ok djm jsing

10 months agoc2sp: replace openssl 3.0 with 3.2 support
tb [Sun, 17 Dec 2023 08:32:26 +0000 (08:32 +0000)]
c2sp: replace openssl 3.0 with 3.2 support

10 months agoMake `fuse_rd_filtops' mpsafe.
mvs [Sat, 16 Dec 2023 22:17:08 +0000 (22:17 +0000)]
Make `fuse_rd_filtops' mpsafe.

Introduce `fd_lock' rwlock(9) and use it for `fd_fbufs_in' fuse buffers
queue and `fd_rklist' knotes list protection.

Tested by Rafael Sadowski.

Discussed with and ok from bluhm

10 months agoRework pflowioctl() lock dances.
mvs [Sat, 16 Dec 2023 22:16:02 +0000 (22:16 +0000)]
Rework pflowioctl() lock dances.

Release netlock and take `sc_lock' rwlock(9) just in the beginning of
pflowioctl() and do corresponding operations in the end. Use `sc_lock'
to protect `sc_dying'.

We need to release netlock not only to keep locks order with `sc_lock'
rwlock(9), but also because pflowioctl() calls some operations like
socreate() or soclose() on udp(4) socket. Current implementation has
many relocking places which breaks atomicy, so merge them into one.

The `sc_lock' rwlock(9) is taken during all pflowioctl() call, so
`sc_dying' atomicy is not broken.

Not the ideal solution, but better then we have now.

Tested by Hrvoje Popovski.

Discussed with and ok from sashan

10 months agoASN1_STRING_TABLE_get.3: grammar: have -> has
tb [Sat, 16 Dec 2023 19:14:56 +0000 (19:14 +0000)]
ASN1_STRING_TABLE_get.3: grammar: have -> has

10 months agoEVP_EncryptUpdate(): make block_size and block_mask const
tb [Sat, 16 Dec 2023 17:40:22 +0000 (17:40 +0000)]
EVP_EncryptUpdate(): make block_size and block_mask const

suggested by millert

10 months agoFirst cleanup pass over EVP_EncryptUpdate()
tb [Sat, 16 Dec 2023 15:22:40 +0000 (15:22 +0000)]
First cleanup pass over EVP_EncryptUpdate()

Use more sensible variable names in order to make the logic a bit easier
to follow. The variables may be renamed in a later pass. Unindent a block
that was squeezed too much to the right and make a few minor stylistic
tweaks.

ok jsing

10 months agoMove EVP_PBE_find() next to the tables
tb [Sat, 16 Dec 2023 14:09:33 +0000 (14:09 +0000)]
Move EVP_PBE_find() next to the tables

There is no point in having EVP_PBE_CipherInit() between the table and
the lookup functions (which it notably uses).

No code change.

10 months agoRemove OBJ_bsearch_() usage from PBE
tb [Sat, 16 Dec 2023 14:04:59 +0000 (14:04 +0000)]
Remove OBJ_bsearch_() usage from PBE

Split the table of built-in password based encryption algorithms into two
and use a linear scan over the table corresponding to the type specified
in EVP_PBE_find()'s type argument. Use better variable names, make the
API a bit safer and generally reduce the eye bleed in here.

ok jsing

10 months agoUsing two different spellings of NULL in the same line is an achievement
tb [Sat, 16 Dec 2023 13:23:20 +0000 (13:23 +0000)]
Using two different spellings of NULL in the same line is an achievement

10 months agoAnnotate incorrect value for ub_email_address
tb [Sat, 16 Dec 2023 12:56:20 +0000 (12:56 +0000)]
Annotate incorrect value for ub_email_address

The ub_email_address upper bound, 128, returned for NID_pkcs9_emailAddress,
doesn't match the PKCS#9 specification where it is 255.  This was adjusted
in RFC 5280:

   The ASN.1 modules in Appendix A are unchanged from RFC 3280, except
   that ub-emailaddress-length was changed from 128 to 255 in order to
   align with PKCS #9 [RFC2985].

Nobody seems to have noticed so far, so leave it at an XXX and a BUGS
entry for now. It also clearly has the wrong name.

Another mystery is why the RFCs suffix some upper bounds with length, but
not others. Also, OpenSSL chose to be inconsistent with that, because
inconsistency is one of the few things this library is really good at.

10 months agoNeuter the ASN1_STRING_TABLE modification API
tb [Sat, 16 Dec 2023 12:40:02 +0000 (12:40 +0000)]
Neuter the ASN1_STRING_TABLE modification API

This is complete nonsense that nothing's ever used except for a test by
schwarze. It will be removed in the next major bump. What remains could
be moved to a simple lookup table in security/xca...

ok jsing

10 months agoRemove call to ASN1_STRING_TABLE_cleanup()
tb [Sat, 16 Dec 2023 12:36:14 +0000 (12:36 +0000)]
Remove call to ASN1_STRING_TABLE_cleanup()

In a few minutes, the string table will no longer have anything to clean
up and ASN1_STRING_TABLE_cleanup() will push an error on the stack. So
remove this pointless call in the still too complicated OPENSSL_cleanup().

ok jsing

10 months agoasn1.h: mark a type and a bunch of macros for removal
tb [Sat, 16 Dec 2023 12:25:02 +0000 (12:25 +0000)]
asn1.h: mark a type and a bunch of macros for removal

ok jsing

10 months agosync
tb [Sat, 16 Dec 2023 10:27:06 +0000 (10:27 +0000)]
sync

10 months agoRename ASN1_STRING_TABLE_add manual to _get
tb [Sat, 16 Dec 2023 10:26:10 +0000 (10:26 +0000)]
Rename ASN1_STRING_TABLE_add manual to _get

10 months agoRemove ASN1_STRING_TABLE_{add,cleanup}() documentation
tb [Sat, 16 Dec 2023 10:22:56 +0000 (10:22 +0000)]
Remove ASN1_STRING_TABLE_{add,cleanup}() documentation

The unused ASN1_STRING_TABLE extensibility API will be removed in the next
major bump and the table itself will become immutable. Lightly adjust the
remaining text. In particular, update the RFC reference, stop talking about
defaults when nothing can be changed anymore, do not mention useless flags
that you will no longer be able to set and move the description of the only
remaining flag after the description of ASN1_STRING_TABLE_get().

The file will be renamed in a second step.

10 months agoImplement and use a do_cipher() wrapper
tb [Sat, 16 Dec 2023 09:46:06 +0000 (09:46 +0000)]
Implement and use a do_cipher() wrapper

Instead of using five different idioms for eight callers of the do_cipher()
method in EVP_{Decrypt,Encrypt}{Update,Final_ex}(), wrap the API insanity
in an evp_cipher() function that calls do_cipher() as appropriate depending
on the EVP_CIPH_FLAG_CUSTOM_CIPHER being set or not. This wrapper has the
usual OpenSSL calling conventions.

There is one complication in EVP_EncryptUpdate() in the case a previous
call wrote only a partial buffer. In that case, the evp_cipher() call is
made twice and the lengths have to be added. Add overflow checks and only
set outl (the number of bytes written) to out on success.

ok jsing

10 months agoFix phdr name in ld.script.
aoyama [Sat, 16 Dec 2023 06:42:38 +0000 (06:42 +0000)]
Fix phdr name in ld.script.

ok deraadt@

10 months agoRemove the string_table test
tb [Fri, 15 Dec 2023 22:24:15 +0000 (22:24 +0000)]
Remove the string_table test

If it wasn't for security/xca, all of the ASN1_STRING_TABLE API would
hit the attic before long. API design by a trained professional...

The table can at least be made immutable, which in turn makes this test
entirely pointless.

10 months agoRemove strings.h again
tb [Fri, 15 Dec 2023 21:55:47 +0000 (21:55 +0000)]
Remove strings.h again

The portable compat shim doesn't provide it.

10 months agoRun non-daemons services in a different process group to avoid SIGHUP at boot
jca [Fri, 15 Dec 2023 16:59:48 +0000 (16:59 +0000)]
Run non-daemons services in a different process group to avoid SIGHUP at boot

12 factors apps and similar don't daemonize and are thus vulnerable to
receiving a SIGHUP signal at the end of /etc/rc.  Shield them by running
them in a different process group.  Do this only for services that need
rc_bg=Yes, as suggested by ajacoutot@

There have been several reports about this issue in the past years, the
last one being from edd@ who successfully tested this fix.  Input from
several folks, ok sthen@ ajacoutot@

10 months agoDrop no-longer-applicable comment.
miod [Fri, 15 Dec 2023 15:20:16 +0000 (15:20 +0000)]
Drop no-longer-applicable comment.

10 months agoprovide the pieces for ktrace/kdump to observe pinsyscall violations.
deraadt [Fri, 15 Dec 2023 15:12:08 +0000 (15:12 +0000)]
provide the pieces for ktrace/kdump to observe pinsyscall violations.
(not used yet, because the pinsyscall changes are still being worked on)
ok kettenis