openbsd
8 months agosync
tb [Sun, 18 Feb 2024 17:20:51 +0000 (17:20 +0000)]
sync

8 months agoTweak previous
tb [Sun, 18 Feb 2024 17:13:29 +0000 (17:13 +0000)]
Tweak previous

8 months agoAdjust regress test for memset() requested by jsing on review
tb [Sun, 18 Feb 2024 16:56:33 +0000 (16:56 +0000)]
Adjust regress test for memset() requested by jsing on review

8 months agoAdd regress coverage for the new API
tb [Sun, 18 Feb 2024 16:32:29 +0000 (16:32 +0000)]
Add regress coverage for the new API

This exercises the new API, in particular with respect to overflow behavior
around the years 0/9999, which are special for GeneralizedTime/X.509.

8 months agoUpdate ASN1_TIME_set(3)
tb [Sun, 18 Feb 2024 16:30:17 +0000 (16:30 +0000)]
Update ASN1_TIME_set(3)

Document OPENSSL_{posix_to_tm,tm_to_posix}() and fix the documentation of
OPENSSL_{gmtime,timegm}().

ok jsing

8 months agoAdd posix_time.h from BoringSSL
tb [Sun, 18 Feb 2024 16:28:37 +0000 (16:28 +0000)]
Add posix_time.h from BoringSSL

This is prepares to expose some internal API as OPENSSL_tm_to_posix() and
OPENSSL_posix_to_tm(). They will be used in libtls and ocspcheck(8) to get
rid of the portability nightmare that is timegm().

Also fix the location of OPENSSL_gmtime() and OPENSSL_timegm() (this API
is not yet exposed). The former is from OpenSSL and surprisingly lives in
crypto.h, not asn1.h, and the latter is BoringSSL API and lives in the new
posix_time.h.

Initial diff from beck, this pulls in further upstream work after review
feedback.

ok jsing

8 months agoAlign EVP_CIPHER_CTX_init() and _legacy_clear()
tb [Sun, 18 Feb 2024 15:53:54 +0000 (15:53 +0000)]
Align EVP_CIPHER_CTX_init() and _legacy_clear()

8 months agoHide EVP_{CIPHER,MD}_CTX_init() from internals
tb [Sun, 18 Feb 2024 15:47:48 +0000 (15:47 +0000)]
Hide EVP_{CIPHER,MD}_CTX_init() from internals

ok jsing

8 months agoUse EVP_MD_CTX_legacy_clear() internally
tb [Sun, 18 Feb 2024 15:45:42 +0000 (15:45 +0000)]
Use EVP_MD_CTX_legacy_clear() internally

ok jsing

8 months agoUse EVP_CIPHER_CTX_legacy_clear() internally
tb [Sun, 18 Feb 2024 15:44:10 +0000 (15:44 +0000)]
Use EVP_CIPHER_CTX_legacy_clear() internally

ok jsing

8 months agoAdd EVP_MD_CTX_legacy_clear()
tb [Sun, 18 Feb 2024 15:43:21 +0000 (15:43 +0000)]
Add EVP_MD_CTX_legacy_clear()

This is analogous to EVP_CIPHER_CTX_legacy_clear() and will serve as an
internal replacement for EVP_MD_CTX_init() until the conversion to heap
allocated ctx is completed. This way EVP_MD_CTX_init() can be changed to
match the OpenSSL 1.1 API.

ok jsing

8 months agoAdd EVP_CIPHER_CTX_legacy_clear()
tb [Sun, 18 Feb 2024 15:41:50 +0000 (15:41 +0000)]
Add EVP_CIPHER_CTX_legacy_clear()

OpenSSL 1.1 made EVP_CIPHER_CTX_init() an alias of EVP_CIPHER_CTX_reset().
In particular, it changed signature and it would no longer leak internal
state if used on an already used ctx. On the other hand, it can't be used
for ctx on the stack.

libcrypto still has a few ctx on the stack which will be converted to heap
allocated contexts at some point. Until this is completed, we will use
EVP_CIPHER_CTX_legacy_clear() internally, so that the public API can be
changed to match OpenSSL 1.1.

ok jsing

8 months agoDon't call cpu_ucode_apply() and cpu_tsx_disable() from cpu_attach()'s
guenther [Sun, 18 Feb 2024 05:42:50 +0000 (05:42 +0000)]
Don't call cpu_ucode_apply() and cpu_tsx_disable() from cpu_attach()'s
CPU_ROLE_SP case: for cpu0 they are called earlier, from cpu_startup().
(APs call them from cpu_hatch())

ok deraadt@

8 months agodt(4): profile: remove clock interrupt staggering
cheloha [Sun, 18 Feb 2024 00:54:03 +0000 (00:54 +0000)]
dt(4): profile: remove clock interrupt staggering

Clock interrupt staggering makes profiling more expensive on average.

Remove it.

Thread: https://marc.info/?l=openbsd-tech&m=170751016121770&w=2

ok mpi@

8 months agosync
deraadt [Sun, 18 Feb 2024 00:02:52 +0000 (00:02 +0000)]
sync

8 months agosync
naddy [Sat, 17 Feb 2024 23:33:52 +0000 (23:33 +0000)]
sync

8 months ago7.6 packages key
naddy [Sat, 17 Feb 2024 22:33:06 +0000 (22:33 +0000)]
7.6 packages key

8 months agosync
deraadt [Sat, 17 Feb 2024 16:28:08 +0000 (16:28 +0000)]
sync

8 months agodelete old keys
deraadt [Sat, 17 Feb 2024 16:27:29 +0000 (16:27 +0000)]
delete old keys

8 months agoadd 7.6 base key, commiting myself to another 6 months
deraadt [Sat, 17 Feb 2024 16:27:21 +0000 (16:27 +0000)]
add 7.6 base key, commiting myself to another 6 months

8 months agomove to 7.5-beta
deraadt [Sat, 17 Feb 2024 16:13:24 +0000 (16:13 +0000)]
move to 7.5-beta

8 months agoAdd 'Send Hold Timer expired' BGP Error code
job [Sat, 17 Feb 2024 14:53:29 +0000 (14:53 +0000)]
Add 'Send Hold Timer expired' BGP Error code

OK deraadt@

8 months agoUse calloc() instead of malloc() in BIO_new().
jsing [Sat, 17 Feb 2024 14:29:07 +0000 (14:29 +0000)]
Use calloc() instead of malloc() in BIO_new().

ok tb@

8 months agoBindings for the rk3288/rk3328/rk3399 have landed in Linux and are being
kettenis [Sat, 17 Feb 2024 13:29:25 +0000 (13:29 +0000)]
Bindings for the rk3288/rk3328/rk3399 have landed in Linux and are being
adopted by U-Boot.  So check for the new compatible strings.  Leave the
old ones in place until we have U-Boot packages with update device trees.

ok phessler@, patrick@

8 months agoAdd JH7100 I2C clocks.
kettenis [Sat, 17 Feb 2024 12:01:45 +0000 (12:01 +0000)]
Add JH7100 I2C clocks.

ok miod@, jsg@

8 months agoimplement qwx_init_task(), which will reset the hardware when it gets
phessler [Fri, 16 Feb 2024 22:46:07 +0000 (22:46 +0000)]
implement qwx_init_task(), which will reset the hardware when it gets
confused

OK stsp@

8 months agoRe-introduce TSO support after we've implemented fixes for the two reported
mglocker [Fri, 16 Feb 2024 22:30:54 +0000 (22:30 +0000)]
Re-introduce TSO support after we've implemented fixes for the two reported
issues:

1. Unaligned memory access panic on sparc64 -> Made ether_extract_headers()
   memory alignment safe.
2. em(4) watchdog timeouts in conjunction with ix(4)/vlan(4) -> Fixed
   RX/LRO packet size calculation used for TSO tagging in ix(4).

Extensive testing done by bluhm@ on amd64 and sparc64 based on different
chips.
Testing done on Hrvoje Popovskis ix(4)/em(4)/vlan(4) setup from where the
issue 2 was reported.

OK bluhm@

8 months agoimprove PBL->SBL EE transition handling in preparation for qwx_init_task()
stsp [Fri, 16 Feb 2024 16:37:42 +0000 (16:37 +0000)]
improve PBL->SBL EE transition handling in preparation for qwx_init_task()

Use a custom work queue for all EE/MHI state transitions.
Running MHI state changes in the systq won't work while running the
qwx init recovery task from the same systq. The init task would wait
for a state change and time out (assuming the device had failed to load
firmware when all was well), then the MHI state change task would run.

For consistency, send wakeups for the initial PBL->SBL EE transition
from the MHI state change task rather than the interrupt handler.
This in-place wakeup was an early hack from before when state
transitions were handled properly.

8 months agoRename fn into fileName to avoid name clash
tb [Fri, 16 Feb 2024 15:19:02 +0000 (15:19 +0000)]
Rename fn into fileName to avoid name clash

ok job

8 months agoRename fn into file to avoid clash in upcoming diff
tb [Fri, 16 Feb 2024 15:18:08 +0000 (15:18 +0000)]
Rename fn into file to avoid clash in upcoming diff

ok job

8 months agoRename rsc into rsc_asn1
tb [Fri, 16 Feb 2024 15:15:02 +0000 (15:15 +0000)]
Rename rsc into rsc_asn1

Should have been part of the previous commit.

ok job

8 months agoUse _asn1 suffix for some aspa/mft/roa/rsc/tak
tb [Fri, 16 Feb 2024 15:13:49 +0000 (15:13 +0000)]
Use _asn1 suffix for some aspa/mft/roa/rsc/tak

This would otherwie clash with an upcoming replacement of struct parse.

ok job

8 months agoRemove struct parse from cert.c
tb [Fri, 16 Feb 2024 14:48:47 +0000 (14:48 +0000)]
Remove struct parse from cert.c

This is one of those weird things that metastasized throughout the code
base. job is about to introduce the 9th incompatible copy of it. Enough
is enough. It doesn't help anything.

looks good to claudio
ok clang

8 months agoInline and disable BIO_set().
jsing [Fri, 16 Feb 2024 14:40:18 +0000 (14:40 +0000)]
Inline and disable BIO_set().

BIO_set() is a dangerous function that cannot be used safely. Thankfully,
the only consumer is BIO_new(), hence inline the functionality and disable
the BIO_set() function (for complete removal in the near future).

ok tb@

8 months agoUse 'bio' more consistently for function arguments.
jsing [Fri, 16 Feb 2024 14:27:43 +0000 (14:27 +0000)]
Use 'bio' more consistently for function arguments.

Rather than 'a' or 'b', use 'bio' more consistently - there are still some
more complex cases that have been left alone for now. Also use fewer
parentheses.

No change to generated assembly other than line numbers.

8 months agofix qwx(4) not coming up on first try if firmware was missing from disk at boot
stsp [Fri, 16 Feb 2024 14:18:36 +0000 (14:18 +0000)]
fix qwx(4) not coming up on first try if firmware was missing from disk at boot

8 months agoremove high-level error messages that cause noise when qwx fw is missing
stsp [Fri, 16 Feb 2024 14:16:16 +0000 (14:16 +0000)]
remove high-level error messages that cause noise when qwx fw is missing

8 months agoprevent memory leaks from duplicate/spurious qwx(4) fw memory requests
stsp [Fri, 16 Feb 2024 14:13:45 +0000 (14:13 +0000)]
prevent memory leaks from duplicate/spurious qwx(4) fw memory requests

The request_mem_indication event handler would always allocate a new
buffer to store the firmware's request, potentially leaking an already
existing copy. Ensure that this buffer is always freed, and avoid
allocating it in the first place if we're not currently expecting this
event to occur.
All this would have surfaced the previously fixed bug with the missing
wakeup much earlier. The wakeup was always missed but when the driver
retried it would find the stale buffer from the previous event and not
even enter tsleep.

8 months agofix whitespace
tb [Fri, 16 Feb 2024 11:55:42 +0000 (11:55 +0000)]
fix whitespace

8 months agoZap extra ;
tb [Fri, 16 Feb 2024 11:46:57 +0000 (11:46 +0000)]
Zap extra ;

8 months agoFix wrong ifmedia check in intel wifi drivers.
stsp [Fri, 16 Feb 2024 11:44:52 +0000 (11:44 +0000)]
Fix wrong ifmedia check in intel wifi drivers.

IFM_AUTO is a media sub-type, not a media mode.
Should fix issues where only a subset of channels were scanned.

Tested:
iwm 8260: millert@
iwm 8265: mglocker@
iwm 9560: gnezdo@
iwx ax200: jmc@
iwx ax210: spiros thanasoulas
iwx ax211: kn@

8 months agostart moving some developmental printfs to be DEBUG DPRINTFs
phessler [Fri, 16 Feb 2024 09:03:29 +0000 (09:03 +0000)]
start moving some developmental printfs to be DEBUG DPRINTFs

requested and OK by stsp@

8 months agoMake it explicit that the EC_KEY setters don't check things
tb [Fri, 16 Feb 2024 06:09:36 +0000 (06:09 +0000)]
Make it explicit that the EC_KEY setters don't check things

While EC_POINT_set_affine_coordinates() checks that the resulting point
is on the elliptic curve, this is only necessary, but not sufficient, to
ensure that the point can serve as a valid public key. For example, this
does not check for normalized coordinates or exclude that it is zero (the
point at infinity). Such checks, and more, are performed by the similarly
named EC_KEY_set_public_key_affine_coordinates().

This kind of makes sense from the mathematical standpoint as an elliptic
curve point isn't a priori a public key, even if you are not going to use
libcrypto for actual mathematics (or anything really) unless you like pain.
In a cryptographic library such differences are more of a hazard than a
help.

This is exacerbated by the fact that EC_KEY_set_public_key() does almost
no checking (it only checks that the point's EC_POINT method matches the
one of group set of the EC_KEY, which is far from enough). The API expects
that you call EC_KEY_check_key() on your own. This is kind of confusing
since EC_KEY_set_public_key_affine_coordinates() does that for you.

Unfortunately, adding sanity checks to EC_KEY_set_public_key() isn't easy
since it's going to penalize those who already check. Caching the result
of a check is dangerous and fragile if there are a million ways of fiddling
with an EC_KEY.

While the elliptic curve code is really bad, its documentation is worse
(another thing that applies to OpenSSL in general). Try to help that a
little bit by making it more explicit that you are supposed to call
EC_KEY_check_key() after using lower-level EC_KEY setters. Also make it
clearer that the setters copy the data, they don't take ownership (which
isn't obvious from the naming).

If OpenSSL 3 got one thing kind of right, it was to deprecate the EC_KEY
and EC_POINT APIs. But if you are going to deprecate something, you should
either be prepared to remove it or have a reasonable replacement...

Found by Guido Vranken using cryptofuzz
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=66667

ok jsing

8 months agoFactor SKI calculation into a helper
tb [Fri, 16 Feb 2024 05:18:29 +0000 (05:18 +0000)]
Factor SKI calculation into a helper

This is a straightforward deduplication and simplification made more
obvious by prior refactoring by job.

"sure" claudio

8 months agoNew sentence, new line. Use .Pa for /etc/login.conf.
jsg [Fri, 16 Feb 2024 01:48:06 +0000 (01:48 +0000)]
New sentence, new line.  Use .Pa for /etc/login.conf.

8 months agoIntroduce new IMSG_CTL_PROCREADY which is used to signal that all pipes
tobhe [Thu, 15 Feb 2024 20:10:45 +0000 (20:10 +0000)]
Introduce new IMSG_CTL_PROCREADY which is used to signal that all pipes
are set up by child processes. The parent sends a ping to all children
and only starts once it has received an acknowledgement from all of them.
This fixes a race condition on process startup when the parent starts
running before all children are ready.

From markus@

8 months agoDelay enabling sockets until ikev2 process is ready.
tobhe [Thu, 15 Feb 2024 19:11:00 +0000 (19:11 +0000)]
Delay enabling sockets until ikev2 process is ready.

from markus@

8 months agoRemove unused control_socks queue.
tobhe [Thu, 15 Feb 2024 19:04:12 +0000 (19:04 +0000)]
Remove unused control_socks queue.

from markus@

8 months agochange permit to be more bits away from deny, because rowhammer.
tedu [Thu, 15 Feb 2024 18:57:58 +0000 (18:57 +0000)]
change permit to be more bits away from deny, because rowhammer.
not really sure why this is our problem, but the diff is small.
ok deraadt millert miod

8 months agoqwx(4) works well enough to enable
deraadt [Thu, 15 Feb 2024 16:33:54 +0000 (16:33 +0000)]
qwx(4) works well enough to enable
ok stsp

8 months agofix wrong tsleep waiting address in qwx_qmi_mem_seg_send()
stsp [Thu, 15 Feb 2024 16:29:45 +0000 (16:29 +0000)]
fix wrong tsleep waiting address in qwx_qmi_mem_seg_send()

Fixes spurious "qwx0: failed to send qmi memory segments: -1" error with
associated lag during 'ifconfig qwx0 down up'

8 months agomake qwx(4) clean up ic_bss and set link down when moving into SCAN state
stsp [Thu, 15 Feb 2024 15:53:51 +0000 (15:53 +0000)]
make qwx(4) clean up ic_bss and set link down when moving into SCAN state

This matches what iwx(4) is doing.

8 months agosort sections;
jmc [Thu, 15 Feb 2024 15:42:57 +0000 (15:42 +0000)]
sort sections;

8 months agosort the qwx(4) entry;
jmc [Thu, 15 Feb 2024 15:42:16 +0000 (15:42 +0000)]
sort the qwx(4) entry;

8 months agofix wrong ifmedia macro used to check for IFM_AUTO
stsp [Thu, 15 Feb 2024 15:40:56 +0000 (15:40 +0000)]
fix wrong ifmedia macro used to check for IFM_AUTO

ok claudio@

8 months agosync
deraadt [Thu, 15 Feb 2024 15:08:00 +0000 (15:08 +0000)]
sync

8 months agoinstall & Xr
deraadt [Thu, 15 Feb 2024 15:07:55 +0000 (15:07 +0000)]
install & Xr

8 months agosome qwx(4) man page tweaks by me
stsp [Thu, 15 Feb 2024 15:05:40 +0000 (15:05 +0000)]
some qwx(4) man page tweaks by me

8 months agoadd an initial qwx(4) man page; written by mpi@ some time ago
stsp [Thu, 15 Feb 2024 15:05:18 +0000 (15:05 +0000)]
add an initial qwx(4) man page; written by mpi@ some time ago

8 months agovmx(4): Add TCP/UDP Checksum Offloading for IPv4/6
jan [Thu, 15 Feb 2024 13:24:45 +0000 (13:24 +0000)]
vmx(4): Add TCP/UDP Checksum Offloading for IPv4/6

ok jmatthew@, bluhm@

8 months agofix datapath Rx buffer management in qwx(4)
stsp [Thu, 15 Feb 2024 11:57:38 +0000 (11:57 +0000)]
fix datapath Rx buffer management in qwx(4)

Fixes Tx/Rx stalls where the device ran out of free Rx buffers to use.

The device consumes buffers on the Rx refill ring out of order, which
the ring management code I wrote intially would not handle properly.
Instead of using an index into the ring where we would expect to see
a free slot which was in fact occupied, keep track of free buffers via
a bitmap.

8 months agoFix bogus packet length calculation in the RX/LRO path, which can lead to
mglocker [Thu, 15 Feb 2024 10:56:53 +0000 (10:56 +0000)]
Fix bogus packet length calculation in the RX/LRO path, which can lead to
TSO tagging forwarded packets which shouldn't.  This will also fix the em(4)
watchdog timeouts seen after the em(4) TSO commit.

Thanks to Hrvoje Popovski for providing the infrastructure the reproduce
the issue, and test the fix.

Discussed with bluhm@.  OK claudio@

8 months agoBIO_dump*() avoid signed integer overflow
tb [Thu, 15 Feb 2024 10:34:30 +0000 (10:34 +0000)]
BIO_dump*() avoid signed integer overflow

This API returns an int encoding the number of bytes printed. Thus, a dump
of a large enough byte string can make this overflow and rely on undefined
behavior.  With an indent of 64, as little as 26 MB is enough to make this
happen.

ok jsing

8 months agoreturn non-zero if drm_fb_helper_alloc_info() fails in rkdrm_fb_probe()
jsg [Thu, 15 Feb 2024 09:48:03 +0000 (09:48 +0000)]
return non-zero if drm_fb_helper_alloc_info() fails in rkdrm_fb_probe()
found by smatch

8 months agoEnsure that the FileAndHashes list in a mft has no duplicates
tb [Thu, 15 Feb 2024 07:01:33 +0000 (07:01 +0000)]
Ensure that the FileAndHashes list in a mft has no duplicates

ok job

8 months agofix fd leaks in error paths
jsg [Thu, 15 Feb 2024 00:55:01 +0000 (00:55 +0000)]
fix fd leaks in error paths
ok miod@

8 months agoCheck IP length in ether_extract_headers().
bluhm [Wed, 14 Feb 2024 22:41:48 +0000 (22:41 +0000)]
Check IP length in ether_extract_headers().

For LRO with ix(4) it is necessary to detect ethernet padding.
Extract ip_len and ip6_plen from the mbuf and provide it to the
drivers.
Add extended sanitity checks, like IP packet is shorter than TCP
header.  This prevents offloading to network hardware with bougus
packets.
Also iphlen of extracted headers contains header length for IPv4
and IPv6, to make code in drivers simpler.

OK mglocker@

8 months agoRemove spurious GET_CURPROC in copyout() mistakenly introduced in r1.43.
miod [Wed, 14 Feb 2024 20:44:54 +0000 (20:44 +0000)]
Remove spurious GET_CURPROC in copyout() mistakenly introduced in r1.43.

8 months agoHide struct ip6q, struct ip6asfrag, struct ip6_moptions,
claudio [Wed, 14 Feb 2024 13:18:21 +0000 (13:18 +0000)]
Hide struct ip6q, struct ip6asfrag, struct ip6_moptions,
struct ip6po_rhinfo and struct ip6_pktopts behind _KERNEL.
The only bit userland may want from netinet6/ip6_var.h is
struct ip6stat.

The recent change to struct ip6po_rhinfo to use struct route
resulted in various build failures in ports because code
included netinet6/ip6_var.h without net/route.h.

OK tb@ sthen@

8 months agoRemove defines no longer needed in locore. NFC
miod [Wed, 14 Feb 2024 12:48:31 +0000 (12:48 +0000)]
Remove defines no longer needed in locore. NFC

8 months agoRemove never ever used cpu_exec() macro, apparently already obsolete by the
miod [Wed, 14 Feb 2024 12:36:35 +0000 (12:36 +0000)]
Remove never ever used cpu_exec() macro, apparently already obsolete by the
time this file was introduced close to 30 years ago.

8 months agomake qwx(4) work with custom MAC addresses set via ifconfig(8)
stsp [Wed, 14 Feb 2024 11:30:55 +0000 (11:30 +0000)]
make qwx(4) work with custom MAC addresses set via ifconfig(8)

ok phessler@

8 months agorpki-client: simplify x509_get_ski()
tb [Wed, 14 Feb 2024 10:49:00 +0000 (10:49 +0000)]
rpki-client: simplify x509_get_ski()

Use X509_public_digest() to calculate the SKI to get rid of a few dances
and weirdly named variables.

ok claudio

8 months agoAdjust test after the change to struct bgpd_addr.
claudio [Wed, 14 Feb 2024 07:56:23 +0000 (07:56 +0000)]
Adjust test after the change to struct bgpd_addr.
Noticed by anton@

8 months agoEnable the pool gc thread on m88k MULTIPROCESSOR kernels now that
miod [Wed, 14 Feb 2024 06:17:51 +0000 (06:17 +0000)]
Enable the pool gc thread on m88k MULTIPROCESSOR kernels now that
pmap_unmap_direct() has been fixed; also tested by aoyama@

8 months agoMake sure pmap_unmap_direct flushes dirty cache lines.
miod [Wed, 14 Feb 2024 06:16:53 +0000 (06:16 +0000)]
Make sure pmap_unmap_direct flushes dirty cache lines.

8 months agoavoid use after free of frp and frp->tname
jsg [Wed, 14 Feb 2024 03:07:58 +0000 (03:07 +0000)]
avoid use after free of frp and frp->tname
found by smatch, ok miod@ millert@

8 months agoavoid use after free of q
jsg [Wed, 14 Feb 2024 02:44:58 +0000 (02:44 +0000)]
avoid use after free of q
found by smatch, ok miod@ deraadt@

8 months agoavoid use after free of fcode
jsg [Wed, 14 Feb 2024 02:40:02 +0000 (02:40 +0000)]
avoid use after free of fcode
found by smatch, fix from deraadt@ ok miod@

8 months agoAdd explicit ASN1_ITEM_EXP prototypes
job [Tue, 13 Feb 2024 22:44:21 +0000 (22:44 +0000)]
Add explicit ASN1_ITEM_EXP prototypes

In LibreSSL *_it are variables, in other implementations they might
be a function. This helps squash compiler warnings in -portable.

Related: https://github.com/openbsd/src/commit/65af98848fc7a42e34d470d10fc1db8e23f9db93

OK tb@

8 months agoRefactor parse_takey()
job [Tue, 13 Feb 2024 21:18:55 +0000 (21:18 +0000)]
Refactor parse_takey()

Avoid i2d_RSAPublicKey() to help with future portability efforts.
Avoid a complication related to size_t/int for the return value
of i2d_X509_PUBKEY. While there, change the out label to 'err'.

OK tb@

8 months agoRemove the stalemanifests metrics (which are no longer in use)
job [Tue, 13 Feb 2024 20:41:22 +0000 (20:41 +0000)]
Remove the stalemanifests metrics (which are no longer in use)

OK tb@

8 months agoImprove printing of TALs extracted from .tak objects
job [Tue, 13 Feb 2024 20:40:17 +0000 (20:40 +0000)]
Improve printing of TALs extracted from .tak objects

This changeset makes the output align more with the TAL file syntax.

OK tb@

8 months agoImprove a comment about what exactly the SKI is
job [Tue, 13 Feb 2024 20:37:15 +0000 (20:37 +0000)]
Improve a comment about what exactly the SKI is

OK tb@

8 months agoAvoid using i2d_RSAPublicKey()
job [Tue, 13 Feb 2024 20:36:42 +0000 (20:36 +0000)]
Avoid using i2d_RSAPublicKey()

This should help with future portability efforts, and perhaps
makes the code a bit more readable.

OK tb@

8 months agoFix splbio usage in oosiop_scsicmd() - it does not need to be taken early
miod [Tue, 13 Feb 2024 17:51:17 +0000 (17:51 +0000)]
Fix splbio usage in oosiop_scsicmd() - it does not need to be taken early
since the switch to iopool years ago, but on the other had the update of
the command TAILQ needs to be done at splbio, and it wasn't.

8 months agoUse an C99 anonymous union inside struct bgpd_addr
claudio [Tue, 13 Feb 2024 16:35:43 +0000 (16:35 +0000)]
Use an C99 anonymous union inside struct bgpd_addr

This kills the two far to generic v4 and v6 macros which is a big win.
OK tb@

8 months agoRemove IMSG_SESSION_DOWN handler in the session engine. The RDE does
claudio [Tue, 13 Feb 2024 16:12:37 +0000 (16:12 +0000)]
Remove IMSG_SESSION_DOWN handler in the session engine. The RDE does
not issue such imsgs.
OK tb@

8 months agoStop logging misleading errors when custom generic error pages are in use.
claudio [Tue, 13 Feb 2024 14:00:24 +0000 (14:00 +0000)]
Stop logging misleading errors when custom generic error pages are in use.

Only call the open(2) log_warn for errnos that are not ENOENT. Since
that is an error worth logging.

Based on a diff from Carsten Reith (carsten.reith t-online.de)
OK florian@ deraadt@

8 months agoAnalyse header layout in ether_extract_headers().
bluhm [Tue, 13 Feb 2024 13:58:19 +0000 (13:58 +0000)]
Analyse header layout in ether_extract_headers().

Several drivers need IPv4 header length and TCP offset for checksum
offload, TSO and LRO.  Accessing these fields directly caused crashes
on sparc64 due to misaligned access.  It cannot be guaranteed that
IP and TCP header is 4 byte aligned in driver level.  Also gcc 4.2.1
assumes that bit fields can be accessed with 32 bit load instructions.

Use memcpy() in ether_extract_headers() to get the bits from IPv4
and TCP header and store the header length in struct ether_extracted.
From there network drivers can esily use it without caring about
alignment and bit shift.  Do some sanity checks with the length
values to prevent that invalid values from evil packets get stored
into hardware registers.  If check fails, clear the pointer to the
header to hide it from the driver.  Add debug prints that help to
figure out the reason for bad packets and provide information when
debugging drivers.

OK mglocker@

8 months agoFix for CVE-2023-50387 and CVE-2023-50868.
florian [Tue, 13 Feb 2024 12:58:05 +0000 (12:58 +0000)]
Fix for CVE-2023-50387 and CVE-2023-50868.

Both can be used to cause high CPU load and potentially denial of
service with specifically crafted DNSSEC responses.

This is a sync with unbound(8).

8 months agoFix for CVE-2023-50387 and CVE-2023-50868.
florian [Tue, 13 Feb 2024 12:57:11 +0000 (12:57 +0000)]
Fix for CVE-2023-50387 and CVE-2023-50868.

Both can be used to cause high CPU load and potentially denial of
service with specifically crafted DNSSEC responses.

8 months agoOnly generate a new xid at the start of getting a new lease.
florian [Tue, 13 Feb 2024 12:53:05 +0000 (12:53 +0000)]
Only generate a new xid at the start of getting a new lease.

"RFC 2131 4.1 Constructing and sending DHCP messages" has this:

| Selecting a new 'xid' for each retransmission is an implementation
| decision.  A client may choose to reuse the same 'xid' or select a new
| 'xid' for each retransmitted message.

We used to change xid for each request / response cycle but this ran
into problems with slow dhcp servers where we would change the xid too
frequently and would ignore late coming replies from the server.

Andre S points out that table 5 in "4.4.1 Initialization and
allocation of network address" says for the xid field in "DHCPREQUEST"
messages:

| 'xid' from server DHCPOFFER message

This seems to suggest that we need to use the same xid for the whole
DHCPDISCOVER / DHCPOFFER / DHCPREQUEST / DHCPACK exchange of messages.

Nothing else in the RFC is saying this though.

But since there are DHCP servers out there that depend on this, we
only generate a new xid when entering the INIT, REBOOTING and RENEWING
state.

I do wonder if we should just go with a static value of 0x04, which
was chosen by a fair dice roll, so guaranteed to be random.

Issue reported, initial diff and fix tested by Andre S
deraadt likes this version
OK tb

8 months agoDocument a portability caveat about GeneralizedTime and UTCTime
job [Tue, 13 Feb 2024 12:38:43 +0000 (12:38 +0000)]
Document a portability caveat about GeneralizedTime and UTCTime

OK tb@

8 months agoControl startup of PROC_CERT and PROC_IKEV2.
tobhe [Tue, 13 Feb 2024 12:25:11 +0000 (12:25 +0000)]
Control startup of PROC_CERT and PROC_IKEV2.
Currenly PROC_PARENT sends the configuration to both PROC_CERT and
PROC_IKEV2 and finishes by sending IMSG_CTL_ACTIVE to PROC_IKEV2.

However, when PROC_IKEV2 receives IMSG_CTL_ACTIVE it does not know
the state of PROC_CERT: PROC_CERT might not have processed the
initial configuration while PROC_IKEV2 already sends requests to
PROC_CERT, causing failed requests, or even crashes (NULL deref of
ca_certs).

In order to make sure that PROC_CERT is ready before
IMSG_CTL_ACTIVE is sent to PROC_IKEV2 that startup protocol
is changed as follows:

(1) PROC_PARENT sends configuration to both PROC_CERT and PROC_IKEV2
(2) PROC_PARENT sends IMSG_CTL_ACTIVE to PROC_CERT
(3) PROC_CERT acks IMSG_CTL_ACTIVE by sending it back to PROC_PARENT
(4) PROC_PARENT now knows that PROC_CERT is ready and has processed
    all messages from step (1)
(5) PROC_PARENT sends IMSG_CTL_ACTIVE to PROC_IKEV2 and knows that
    IMSG_CTL_ACTIVE will be processed by PROC_IKEV2 after all
    messages from step (1)
(6) PROC_IKEV2 can now assume that PROC_CERT is ready because it has
    already processed IMSG_CTL_ACTIVE

from markus@

8 months agoMerge struct route and struct route_in6.
bluhm [Tue, 13 Feb 2024 12:22:09 +0000 (12:22 +0000)]
Merge struct route and struct route_in6.

Use a common struct route for both inet and inet6.  Unfortunately
struct sockaddr is shorter than sockaddr_in6, so netinet/in.h has
to be exposed from net/route.h.  Struct route has to be bsd visible
for userland as netstat kvm code inspects inp_route.  Internet PCB
and TCP SYN cache can use a plain struct route now.  All specific
sockaddr types for inet and inet6 are embeded there.

OK claudio@

8 months agoRemove sanity checks from uvm_pagefree(). The first thing this function does
miod [Tue, 13 Feb 2024 10:16:28 +0000 (10:16 +0000)]
Remove sanity checks from uvm_pagefree(). The first thing this function does
is invoke uvm_pageclean(), which performs the exact same sanity check, so
one set of checks is enough.

ok mpi@

8 months agoThere is no way to implement the INKERNEL() macro on sparc64.
claudio [Tue, 13 Feb 2024 09:29:39 +0000 (09:29 +0000)]
There is no way to implement the INKERNEL() macro on sparc64.
It was set to just 1 since the dawn of sparc64 support. It is
time to accept the fact and remove all INKERNEL() checks.
OK miod@ mpi@

8 months agozlib: sync with base
tb [Tue, 13 Feb 2024 08:26:56 +0000 (08:26 +0000)]
zlib: sync with base

8 months agoPull in z_off64_t handling from upstream
tb [Tue, 13 Feb 2024 08:26:26 +0000 (08:26 +0000)]
Pull in z_off64_t handling from upstream

Since we don't define Z_LARGE64, we continue to define z_off64_t to z_off_t
and all the other changes are no-ops for OpenBSD.

ok kettenis millert