openbsd
6 months agoremove psk_idx from tlsext_randomize_build_order()
tb [Wed, 26 Jun 2024 03:41:10 +0000 (03:41 +0000)]
remove psk_idx from tlsext_randomize_build_order()

ok jsing

6 months agotls_extension_find(): make output index optional
tb [Wed, 26 Jun 2024 03:39:49 +0000 (03:39 +0000)]
tls_extension_find(): make output index optional

suggested by jsing

6 months agoreturn type on a dedicated line when declaring functions
jsg [Wed, 26 Jun 2024 01:40:49 +0000 (01:40 +0000)]
return type on a dedicated line when declaring functions
ok mglocker@

6 months agoImplement RSA key exchange in constant time.
jsing [Tue, 25 Jun 2024 14:10:45 +0000 (14:10 +0000)]
Implement RSA key exchange in constant time.

RSA key exchange is known to have multiple security weaknesses,
including being potentially susceptible to padding oracle and timing
attacks.

The RSA key exchange code that we inherited from OpenSSL was riddled
with timing leaks, many of which we fixed (or minimised) early on.
However, a number of issues still remained, particularly those
related to libcrypto's RSA decryption and padding checks.

Rework the RSA key exchange code such that we decrypt with
RSA_NO_PADDING and then check the padding ourselves in constant
time. In this case, the pre-master secret is of a known length,
hence the padding is also a known length based on the size of the
RSA key. This makes it easy to implement a check that is much safer
than having RSA_private_decrypt() depad for us.

Regardless, we still strongly recommend disabling RSA key exchange
and using other key exchange methods that provide perfect forward
secrecy and do not depend on client generated keys.

Thanks to Marcel Maehren, Nurullah Erinola, Robert Merget, Juraj
Somorovsky, Joerg Schwenk and Hubert Kario for raising these issues
with us at various points in time.

ok tb@

6 months agoWhen filling prefixes with pt_writebuf() keep 2 bytes reserved in the
claudio [Tue, 25 Jun 2024 13:21:18 +0000 (13:21 +0000)]
When filling prefixes with pt_writebuf() keep 2 bytes reserved in the
withdraw case. Those bytes are needed for the attribute length field.
Without this withdraw messages can become overfull and are dropped
without notice.

Problem found and fix tested by denis@
OK denis@ tb@

6 months agoPrint the last non-wakeup interrupt received during suspend. Note that
kettenis [Tue, 25 Jun 2024 12:02:48 +0000 (12:02 +0000)]
Print the last non-wakeup interrupt received during suspend.  Note that
this may print an (MSI) interrupt that sneaks in just before we actually
enter the idle loop on the primary CPU.  While such an interrupt shouldn't
happen, they won't prevent the machine from reaching a low power idle state.
So at this point these non-wakeup interrupts only need to be investigated
when the primary CPU gets woken up repeatedly.

ok mglocker@, deraadt@

6 months agoImplement sleep button and EC events as wakeup events. Print the wakeup
kettenis [Tue, 25 Jun 2024 11:57:10 +0000 (11:57 +0000)]
Implement sleep button and EC events as wakeup events.  Print the wakeup
reason.

ok mglocker@, deraadt@

6 months agoFix TLS extension shuffling
tb [Tue, 25 Jun 2024 05:46:48 +0000 (05:46 +0000)]
Fix TLS extension shuffling

The diff decoupling the shuffle from the table order still relied on PSK
being last because it failed to adjust the upper bound in the for loop.

ok jsing

6 months agoShow AMD SEV bits during identify CPU in dmesg.
bluhm [Mon, 24 Jun 2024 21:22:14 +0000 (21:22 +0000)]
Show AMD SEV bits during identify CPU in dmesg.

Enable identifycpu() to discover and show AMD SEV related information
provided by cpuid.
The "crypt bit" for page table entries is stored in amd64_pos_cbit,
although it is not used yet.
Registers ecx and edx provide the number of guest and minimum ASID
for SEV-only guests.  At least the latter value can be configured
in the BIOS, so it is useful to have this information in dmesg.
Therefore define emtpy bit masks for printf("%b") to get the raw
numbers.

from hshoexer@; OK mlarkin@

6 months agoSome machines send AC change notifications to acpibat(4). Forward this
mglocker [Mon, 24 Jun 2024 15:56:07 +0000 (15:56 +0000)]
Some machines send AC change notifications to acpibat(4).  Forward this
notification to acpiac(4), so that the AC status can be reflected correctly
to programs like apm(8).

This for example fixes the AC status on the Microsoft Surface Go 4.

Help from kettenis@

ok deraadt@, kettenis@

6 months agochanging EINVAL from "has no associated size" to "has insufficient size"
deraadt [Mon, 24 Jun 2024 14:39:28 +0000 (14:39 +0000)]
changing EINVAL from "has no associated size" to "has insufficient size"
does a better job of covering the case of partition not configured
(size = 0) or other too-small decision the kernel may make

6 months agoExplicitly allocate stack memory for ICMP payload in IPv4 forward.
bluhm [Mon, 24 Jun 2024 12:19:19 +0000 (12:19 +0000)]
Explicitly allocate stack memory for ICMP payload in IPv4 forward.

Old ip_forward() allocated a fake mbuf copy on the stack to send
an ICMP packet after ip_output() has failed.  It seems easier to
just copy the data onto the stack that icmp_error() may use.  Only
if the ICMP error packet is acutally sent, create the mbuf.

m_dup_pkthdr() uses atomic operation to link the incpb to mbuf.
pf_pkt_addr_changed() was immediately called afterwards to remove
the linkage again.  Also m_tag_delete_chain() was overhead.  New
code uses less CPU locking in the hot path.

OK deraadt@ claudio@

6 months agoAdd a way (refresh-client -r) for control mode clients to provide OSC 10
nicm [Mon, 24 Jun 2024 08:30:50 +0000 (08:30 +0000)]
Add a way (refresh-client -r) for control mode clients to provide OSC 10
and 11 responses to tmux so they can set the default foreground and
background colours, from George Nachman in GitHub issue 4014.

6 months agoCheck the underline style colour against the correct default value again
nicm [Mon, 24 Jun 2024 08:11:46 +0000 (08:11 +0000)]
Check the underline style colour against the correct default value again
(it was changed from 0 to 8), from Romain Francoise.

6 months ago- uppercase start of sentence
jmc [Mon, 24 Jun 2024 06:59:39 +0000 (06:59 +0000)]
- uppercase start of sentence
- correct sentence grammar

ok djm

6 months agossl_err: KNF tweak
tb [Mon, 24 Jun 2024 06:50:07 +0000 (06:50 +0000)]
ssl_err: KNF tweak

6 months agossl_err: fix whitespace
tb [Mon, 24 Jun 2024 06:49:45 +0000 (06:49 +0000)]
ssl_err: fix whitespace

6 months agolibcrypto: constify most error string tables
tb [Mon, 24 Jun 2024 06:43:22 +0000 (06:43 +0000)]
libcrypto: constify most error string tables

These constitute the bulk of the remaining global mutable state in
libcrypto. This commit moves most of them into data.rel.ro, leaving
out ERR_str_{functs,libraries,reasons} (which require a slightly
different approach) and SYS_str_reasons which is populated on startup.

The main observation is that if ERR_load_strings() is called with a 0 lib
argument, the ERR_STRING_DATA argument is not actually modified. We could
use this fact to cast away const on the caller side and be done with it.
We can make this cleaner by adding a helper ERR_load_const_strings() which
explicitly avoids the assignment to str->error overriding the error code
already set in the table.

In order for this to work, we need to sprinkle some const in err/err.c.
CMS called ERR_load_strings() with non-0 lib argument, but this didn't
actually modify the error data since it ored in the value already stored
in the table.

Annoyingly, we need to cast const away once, namely in the call to
lh_insert() in int_err_set_item(). Fixing this would require changing
the public API and is going to be tricky since it requires that the
LHASH_DOALL_FN_* types adjust.

ok jsing

6 months agox509_conf: rename the merr label into err
tb [Mon, 24 Jun 2024 06:32:04 +0000 (06:32 +0000)]
x509_conf: rename the merr label into err

6 months agoStudio -> Mac Studio; from Bryan Vyhmeister
jsg [Mon, 24 Jun 2024 05:15:29 +0000 (05:15 +0000)]
Studio -> Mac Studio; from Bryan Vyhmeister

6 months agomention SshdSessionPath option
djm [Mon, 24 Jun 2024 04:05:11 +0000 (04:05 +0000)]
mention SshdSessionPath option

6 months agodrm/i915: Fix audio component initialization
jsg [Mon, 24 Jun 2024 03:57:38 +0000 (03:57 +0000)]
drm/i915: Fix audio component initialization

From Imre Deak
f287b1e34f1dd910723ca720300548c27a9a72d7 in linux-6.6.y/6.6.35
75800e2e4203ea83bbc9d4f63ad97ea582244a08 in mainline linux

6 months agodrm/i915/dpt: Make DPT object unshrinkable
jsg [Mon, 24 Jun 2024 03:52:26 +0000 (03:52 +0000)]
drm/i915/dpt: Make DPT object unshrinkable

From Vidya Srinivas
7a9883be3b98673333eec65c4a21cc18e60292eb in linux-6.6.y/6.6.35
43e2b37e2ab660c3565d4cff27922bc70e79c3f1 in mainline linux

6 months agodrm/i915/gt: Disarm breadcrumbs if engines are already idle
jsg [Mon, 24 Jun 2024 03:49:19 +0000 (03:49 +0000)]
drm/i915/gt: Disarm breadcrumbs if engines are already idle

From Chris Wilson
1d2f1123a05e3e269cd7564005b0b717f2014437 in linux-6.6.y/6.6.35
70cb9188ffc75e643debf292fcddff36c9dbd4ae in mainline linux

6 months agoIf an ioctl(2) request isn't implemented we should return ENOTTY.
kettenis [Sun, 23 Jun 2024 22:08:37 +0000 (22:08 +0000)]
If an ioctl(2) request isn't implemented we should return ENOTTY.

ok deraadt@

6 months agoWhen ripping out Qualcomm's EL2 on the x13s, calls into the Secure Monitor
patrick [Sun, 23 Jun 2024 22:04:53 +0000 (22:04 +0000)]
When ripping out Qualcomm's EL2 on the x13s, calls into the Secure Monitor
make the machine crash.  As it turns out the SMC calling convention specifies
that further registers up to and including x18 might need to be caller-saved,
which we seem to have to follow now.

ok kettenis@

6 months agoWhile Qualcomm Snapdragon X Elite (X1E80100) claims to support 32 device-id
patrick [Sun, 23 Jun 2024 21:58:34 +0000 (21:58 +0000)]
While Qualcomm Snapdragon X Elite (X1E80100) claims to support 32 device-id
bits, it only seems to allow a 4k pagesize with 8 bytes per entry.  This is
not enough to handle all 32 device-id bits, but we also don't necessarily
need to handle all of them.  Hence clamp down the number of maximum device
IDs to as much as we can possibly configure in hardware.

ok kettenis@

6 months agoAdd support for ACPI firmware that provides the base address of individual
kettenis [Sun, 23 Jun 2024 15:37:31 +0000 (15:37 +0000)]
Add support for ACPI firmware that provides the base address of individual
GIC redistributors in the per-CPU GIC MADT table entries.

ok patrick@

6 months agorust-openssl: switch from deprecated config to config.toml
tb [Sun, 23 Jun 2024 13:53:21 +0000 (13:53 +0000)]
rust-openssl: switch from deprecated config to config.toml

6 months agoFix previous commit; add missing label
kettenis [Sun, 23 Jun 2024 13:11:51 +0000 (13:11 +0000)]
Fix previous commit; add missing label

6 months agoAdd RK3588 support.
kettenis [Sun, 23 Jun 2024 10:18:11 +0000 (10:18 +0000)]
Add RK3588 support.

ok patrick@

6 months agoEnable EPAN if it is available.
kettenis [Sun, 23 Jun 2024 10:17:16 +0000 (10:17 +0000)]
Enable EPAN if it is available.

ok patrick@

6 months agoopenssl ca: avoid double free for spkac files without default section
tb [Sun, 23 Jun 2024 07:50:52 +0000 (07:50 +0000)]
openssl ca: avoid double free for spkac files without default section

ok jsing

6 months agostrmode takes a mode_t, not an int; prompted by Collin Funk.
otto [Sun, 23 Jun 2024 07:08:26 +0000 (07:08 +0000)]
strmode takes a mode_t, not an int; prompted by Collin Funk.
ok kettenis@ deraadt@ tb@

6 months agolower parts of the manual page clearly say why using malloc() to
deraadt [Sat, 22 Jun 2024 17:19:05 +0000 (17:19 +0000)]
lower parts of the manual page clearly say why using malloc() to
allocate sigaltstack regions is bad... so the example code should
not use malloc()...
ok semarie

6 months agoRemove the less-than-useful change log.
jsing [Sat, 22 Jun 2024 16:38:31 +0000 (16:38 +0000)]
Remove the less-than-useful change log.

ok tb@

6 months agoRewrite BN_bn2mpi() using CBB.
jsing [Sat, 22 Jun 2024 16:33:00 +0000 (16:33 +0000)]
Rewrite BN_bn2mpi() using CBB.

The content is effectively a u32 length prefixed field, so use
CBB_add_u32_length_prefixed(). Use BN_bn2binpad() rather than manually
padding if we need to extend and use sensible variable names so that the
code becomes more readable.

Note that since CBB can fail we now need to be able to indicate failure.
This means that BN_bn2mpi() can now return -1 when it would not have
previously (correct callers will check that BN_bn2mpi() returns a positive
length).

ok tb@

6 months agoSync bytestring from libssl.
jsing [Sat, 22 Jun 2024 15:32:51 +0000 (15:32 +0000)]
Sync bytestring from libssl.

6 months agoProvide CBB_add_u32_length_prefixed().
jsing [Sat, 22 Jun 2024 15:25:06 +0000 (15:25 +0000)]
Provide CBB_add_u32_length_prefixed().

This is needed for an upcoming change in libcrypto.

ok tb@

6 months agodelete ancient netbsd pcibios tweaking trash
deraadt [Sat, 22 Jun 2024 12:38:32 +0000 (12:38 +0000)]
delete ancient netbsd pcibios tweaking trash

6 months agocorrect elfcore_procinfo naming (in comments)
deraadt [Sat, 22 Jun 2024 12:26:17 +0000 (12:26 +0000)]
correct elfcore_procinfo naming (in comments)

6 months agoremove space between function names and argument list
jsg [Sat, 22 Jun 2024 10:22:29 +0000 (10:22 +0000)]
remove space between function names and argument list

6 months agoMy earlier commit [1.1169 of pf.c (2023/01/05)] makes pf(4) to report wrong
sashan [Fri, 21 Jun 2024 12:51:29 +0000 (12:51 +0000)]
My earlier commit [1.1169 of pf.c (2023/01/05)] makes pf(4) to report wrong
rule and anchor number when packet matches rule found and anchor depth 2
and more.  The issue has been noticed and reported by Giannis Kapetanakis
(billias _at_ edu.physics.uoc.gr), who also co-developed and tested
the final fix presented in this commit.

To fix the issue pf(4) must also remember the anchor where matching rule
belongs while rules are traversed to find a match for given packet.
The information on anchor is now kept in anchor stack frame.w

OK sthen@

6 months agorecognise Qualcomm Oryon; ok kettenis@
jsg [Fri, 21 Jun 2024 01:52:17 +0000 (01:52 +0000)]
recognise Qualcomm Oryon; ok kettenis@

6 months agoUpdate ruby-module.5 for default Ruby version switch to 3.3
jeremy [Thu, 20 Jun 2024 22:43:16 +0000 (22:43 +0000)]
Update ruby-module.5 for default Ruby version switch to 3.3

6 months agoInstead of allocating an arbitrary amount of extra space, let the EFI
kettenis [Thu, 20 Jun 2024 22:03:23 +0000 (22:03 +0000)]
Instead of allocating an arbitrary amount of extra space, let the EFI
devicetree fixup protocol less us how much space it needs.

Pointed out by Heinrich Schuchardt
ok tobhe@, mlarkin@

6 months agoInstead of allocating an arbitrary amount of extra space, let the EFI
kettenis [Thu, 20 Jun 2024 22:03:02 +0000 (22:03 +0000)]
Instead of allocating an arbitrary amount of extra space, let the EFI
devicetree fixup protocol less us how much space it needs.

Pointed out by Heinrich Schuchardt
ok tobhe@, mlarkin@

6 months agoInstead of allocating an arbitrary amount of extra space, let the EFI
kettenis [Thu, 20 Jun 2024 21:52:08 +0000 (21:52 +0000)]
Instead of allocating an arbitrary amount of extra space, let the EFI
devicetree fixup protocol less us how much space it needs.

Pointed out by Heinrich Schuchardt
ok tobhe@, mlarkin@

6 months agoAdd missing ref & reorder
job [Thu, 20 Jun 2024 20:15:02 +0000 (20:15 +0000)]
Add missing ref & reorder

OK tb@ claudio@

6 months agoRead IPv6 forwarding value only once while processing a packet.
bluhm [Thu, 20 Jun 2024 19:25:42 +0000 (19:25 +0000)]
Read IPv6 forwarding value only once while processing a packet.

IPv4 uses IP_FORWARDING to pass down a consistent value of
net.inet.ip.forwarding down the stack.  This is needed for unlocking
sysctl.  Do the same for IPv6.

Read ip6_forwarding once in ip6_input_if() and pass down IPV6_FORWARDING
as flags to ip6_ours(), ip6_hbhchcheck(), ip6_forward().  Replace
the srcrt value with IPV6_REDIRECT flag for consistency with IPv4.

To have common syntax with IPv4, use ip6_forwarding == 0 checks
instead of !ip6_forwarding.  This will also make it easier to
implement net.inet6.ip6.forwarding=2 for IPsec only forwarding
later.

In nd6_ns_input() and nd6_na_input() read ip6_forwarding once and
store it in i_am_router.  The variable name has been chosen to avoid
confusion with is_router, which indicates router flag of the packet.
Reading of ip6_forwarding is done independently from ip6_input_if(),
consistency does not really matter.  One is for ND router behavior
the other for forwarding.  Again use the ip6_forwarding != 0 check,
so when ip6_forwarding IPsec only value 2 gets implemented, it will
behave like a router.

OK deraadt@ sashan@ florian@ claudio@

6 months agoDo not send ICMP redirect if IP forwarding is IPsec only.
bluhm [Thu, 20 Jun 2024 19:25:04 +0000 (19:25 +0000)]
Do not send ICMP redirect if IP forwarding is IPsec only.

If sysctl net.inet.ip.forwarding is set to 2, only packets processed
by IPsec are forwarded.  I this case behave more like a router than
a host and do not accept ICMP redirect packets.

OK deraadt@ sashan@ florian@ claudio@

6 months agovmd(8): protect global vm and vcpu state with mutex.
dv [Thu, 20 Jun 2024 15:33:44 +0000 (15:33 +0000)]
vmd(8): protect global vm and vcpu state with mutex.

The vm process uses multiple pthreads to emulate vcpu and also drive
an event loop doing various io emulation. At points, one or the
other needs to read/write global vm state bits and toggle if a vcpu
is halted or "done."

This adds in a another mutex to protected the global state and
untangles areas where the mutex for protecting a condition variable
was being used around modifying some global state.

ok mlarkin@

6 months agoEnable uvm percpu caches on luna88k.
aoyama [Thu, 20 Jun 2024 10:46:11 +0000 (10:46 +0000)]
Enable uvm percpu caches on luna88k.

It survives 3.5 days "make build" and makes about 1.5% faster on 3 CPU
machine:-)

ok miod@ phessler@ dlg@

6 months agoWork around dbclient cipher and mac query bug.
dtucker [Thu, 20 Jun 2024 08:23:18 +0000 (08:23 +0000)]
Work around dbclient cipher and mac query bug.

Unlike earlier versions, recent Dropbear (at least v2024.85) requires
a host arg when querying supported ciphers and macs via "-c/-m
help".  Earlier versions accept but do not require it, so always
provide it.  If these queries fail, skip the test with a warning.

6 months agoRemove dropbear key types not supported by current OpenSSH.
dtucker [Thu, 20 Jun 2024 08:18:34 +0000 (08:18 +0000)]
Remove dropbear key types not supported by current OpenSSH.
Allows subsequent test runs to work if OpenSSH is rebuilt w/out OpenSSL.

6 months agostricter check for overfull tables in penalty record path
djm [Thu, 20 Jun 2024 00:18:05 +0000 (00:18 +0000)]
stricter check for overfull tables in penalty record path

6 months agoput back reaping of preauth child process when writes from the monitor
djm [Wed, 19 Jun 2024 23:24:47 +0000 (23:24 +0000)]
put back reaping of preauth child process when writes from the monitor
fail. Not sure how this got lost in the avalanche of patches.

6 months agoThe GICv3 redistributor spacing on the X1E80100 (Snapdragon X Elite)
patrick [Wed, 19 Jun 2024 22:10:45 +0000 (22:10 +0000)]
The GICv3 redistributor spacing on the X1E80100 (Snapdragon X Elite)
does not follow the regular scheme and needs to be read out of the
redistributor-stride property.

ok kettenis@

6 months agoAdd PNP IDs to handle the X1E80100 (Snapdragon X Elite) USB controllers.
patrick [Wed, 19 Jun 2024 21:31:10 +0000 (21:31 +0000)]
Add PNP IDs to handle the X1E80100 (Snapdragon X Elite) USB controllers.

ok kettenis@

6 months agoAdd _HID for X1E80100 (Snapdragon X Elite) SoCs.
patrick [Wed, 19 Jun 2024 21:27:22 +0000 (21:27 +0000)]
Add _HID for X1E80100 (Snapdragon X Elite) SoCs.

ok kettenis@

6 months agoThe X1E80100 (Snapdragon X Elite) joins the group of chips that require
patrick [Wed, 19 Jun 2024 21:25:41 +0000 (21:25 +0000)]
The X1E80100 (Snapdragon X Elite) joins the group of chips that require
the SMMU quirk.

ok kettenis@

6 months agoremove externs for global hibernate_state
jsg [Wed, 19 Jun 2024 13:27:26 +0000 (13:27 +0000)]
remove externs for global hibernate_state
removed in subr_hibernate.c rev 1.35

6 months agoKill the SIGPIPE signal handler which is installed around write opertations.
claudio [Wed, 19 Jun 2024 13:13:25 +0000 (13:13 +0000)]
Kill the SIGPIPE signal handler which is installed around write opertations.
Instead just SIG_IGN SIGPIPE in main.c for all of acme-client.
More work to be done here but at least this distraction is gone.
OK florian@ deraadt@ op@

6 months agoProvide defaults for ciphers and macs if querying for them fails since
dtucker [Wed, 19 Jun 2024 10:15:51 +0000 (10:15 +0000)]
Provide defaults for ciphers and macs if querying for them fails since
on some versions of Dropbear (at least v2024.85) "-m help" doesn't seem
to work.  Enable all supported pubkey algorithms in the server.

6 months agoUse ed25519 keys for kex tests since that's supported by OpenSSH even when
dtucker [Wed, 19 Jun 2024 10:10:46 +0000 (10:10 +0000)]
Use ed25519 keys for kex tests since that's supported by OpenSSH even when
built without OpenSSL.  Only test diffie-hellman kex if OpenSSH is compiled
with support for it.

6 months agoRework dropbear key setup to always generate ed25519 keys, other types
dtucker [Wed, 19 Jun 2024 10:08:34 +0000 (10:08 +0000)]
Rework dropbear key setup to always generate ed25519 keys, other types
only if OpenSSH has support for the corresponding key type.

6 months agox_all.c: remove a bunch of unnecessary parentheses
tb [Wed, 19 Jun 2024 08:00:53 +0000 (08:00 +0000)]
x_all.c: remove a bunch of unnecessary parentheses

6 months agoHandle interfaces going down and up again.
florian [Wed, 19 Jun 2024 07:42:44 +0000 (07:42 +0000)]
Handle interfaces going down and up again.

Missing feature reported by, testing & OK semarie

6 months agoBetter words for downloaded snap is older message.
otto [Wed, 19 Jun 2024 05:22:33 +0000 (05:22 +0000)]
Better words for downloaded snap is older message.
ok deraadt@ florian@ tb@

6 months ago#if notyet -> #ifdef notyet for consistency and -Wundef
jsg [Wed, 19 Jun 2024 01:32:24 +0000 (01:32 +0000)]
#if notyet -> #ifdef notyet for consistency and -Wundef

6 months agoStop trying to deprecate "test -L" in favour of "test -h" (or vice versa).
schwarze [Tue, 18 Jun 2024 16:41:39 +0000 (16:41 +0000)]
Stop trying to deprecate "test -L" in favour of "test -h" (or vice versa).
It's hopeless because POSIX requires both since Issue 6 (2001).
Both always worked on OpenBSD, no matter which base system shell was used.

According to research done by jsg@, it seems likely that actually,
"test -L" has precedence over "test -h" by about one year:
v8 (Feb 1985) had -L, SunOS 3.0 (Feb 1986) had -h; but SVR4 (1989)
already had both, so we are talking about 35 years of petrification.
More details: https://marc.info/?l=openbsd-bugs&m=171867441927989

Resolving a question raised by Tim dot theCHASEs dot com on bugs@.
OK deraadt@ millert@ jsg@ jmc@  and also works for Tim Chase.

6 months agoUse BUILDINFO to make sure we are not going backwards in time.
florian [Tue, 18 Jun 2024 14:57:59 +0000 (14:57 +0000)]
Use BUILDINFO to make sure we are not going backwards in time.

Input & OK deraadt

6 months agoremove prototypes with no matching function
jsg [Tue, 18 Jun 2024 12:37:29 +0000 (12:37 +0000)]
remove prototypes with no matching function

6 months agov3_generic_extension() use ASN1_STRING_set0()
tb [Tue, 18 Jun 2024 09:47:03 +0000 (09:47 +0000)]
v3_generic_extension() use ASN1_STRING_set0()

This aligns it with do_ext_i2d()

6 months agov3_generic_extension() rename the X509_EXTENSION
tb [Tue, 18 Jun 2024 09:41:33 +0000 (09:41 +0000)]
v3_generic_extension() rename the X509_EXTENSION

now that ext is free, we can use it like everywhere else

6 months agoRename 'ext' to 'name' in v3_generic_extension()
tb [Tue, 18 Jun 2024 09:35:09 +0000 (09:35 +0000)]
Rename 'ext' to 'name' in v3_generic_extension()

In this code 'ext' is usually used for an X509_EXTENSION object.

6 months agoremove wdc_ata_addref()/wdc_ata_delref() #if 0'd since rev 1.1
jsg [Tue, 18 Jun 2024 09:08:02 +0000 (09:08 +0000)]
remove wdc_ata_addref()/wdc_ata_delref() #if 0'd since rev 1.1

6 months agoMake local BIT_STRING_BITNAME variables const
tb [Tue, 18 Jun 2024 08:29:40 +0000 (08:29 +0000)]
Make local BIT_STRING_BITNAME variables const

There's no reason for them not to be const. This is a piece of a larger
diff that I carry in several of my trees to move more things to rodata
or relro. The full diff requires a change to a public header and it's
very annoying to have to 'make includes' and recompile the entire lib
all the time when hopping from tree to tree.

6 months agoRe-enable ssh-dss tests if ssh is compiled with DSA support
dtucker [Tue, 18 Jun 2024 08:11:48 +0000 (08:11 +0000)]
Re-enable ssh-dss tests if ssh is compiled with DSA support

6 months agoStop using DSA in dropbear interop tests.
anton [Tue, 18 Jun 2024 06:14:27 +0000 (06:14 +0000)]
Stop using DSA in dropbear interop tests.

6 months agox509_conf: rename ext_struc into ext_struct
tb [Tue, 18 Jun 2024 05:56:37 +0000 (05:56 +0000)]
x509_conf: rename ext_struc into ext_struct

requested by jsing on review

6 months agox509_conf: rename all ext_nid to nid
tb [Tue, 18 Jun 2024 05:39:52 +0000 (05:39 +0000)]
x509_conf: rename all ext_nid to nid

There are no nid variables in this file, so no need to disambiguate.

6 months agodo_ext_i2d(): move empty line to the proper place
tb [Tue, 18 Jun 2024 05:37:24 +0000 (05:37 +0000)]
do_ext_i2d(): move empty line to the proper place

6 months agodo_ext_i2d(): malloc -> calloc
tb [Tue, 18 Jun 2024 05:35:30 +0000 (05:35 +0000)]
do_ext_i2d(): malloc -> calloc

requested by jsing on review

6 months agodo_ext_i2d(): populate ext_oct with ASN1_STRING_set0()
tb [Tue, 18 Jun 2024 05:34:09 +0000 (05:34 +0000)]
do_ext_i2d(): populate ext_oct with ASN1_STRING_set0()

ok jsing

6 months agodo_ext_i2d(): avoid leaks and add some missing error checking
tb [Tue, 18 Jun 2024 05:32:38 +0000 (05:32 +0000)]
do_ext_i2d(): avoid leaks and add some missing error checking

If ASN1_OCTET_STRING_new() failed, ext_der would be leaked, fix this.
If i2d(foo, NULL) succeeded, the same is not guaranteed for the second
with appropriately sized buffer since i2d() may make further allocations
internally. So use the proper error check. Also transfer the ownership of
ext_der to the octet string to avoid a now possible double free.

ok jsing

6 months agoIndent labels in x509_conf.c
tb [Tue, 18 Jun 2024 05:24:24 +0000 (05:24 +0000)]
Indent labels in x509_conf.c

6 months agodo_ext_i2d(): make various NULL checks explicit
tb [Tue, 18 Jun 2024 05:22:37 +0000 (05:22 +0000)]
do_ext_i2d(): make various NULL checks explicit

ok jsing

6 months agodo_ext_i2d(): unwrap a line
tb [Tue, 18 Jun 2024 05:19:01 +0000 (05:19 +0000)]
do_ext_i2d(): unwrap a line

6 months agoiked: do not attempt to read multiple SANs
tb [Tue, 18 Jun 2024 05:08:41 +0000 (05:08 +0000)]
iked: do not attempt to read multiple SANs

No extension in a valid certificate appears more than once per RFC 5280
section 4.2. So don't go walking the extension stack and try to inspect
multiple subject alternative names because crappy OpenSSL API encourages
you to do so. Instead call the API in the only correct way possible and
report multiple SANs in log_info(). This is unlikely to be hit since the
extension caching in LibreSSL has rejected repeated OIDs in a cert for a
long time.

ok tobhe

6 months agoQuiet compiler warnings when built with WARNINGS=Yes
millert [Tue, 18 Jun 2024 02:11:03 +0000 (02:11 +0000)]
Quiet compiler warnings when built with WARNINGS=Yes
Most are from functions that take no args but used the old
K&R style foo() instead of foo(void).  From espie@

6 months agogrow the iso again
deraadt [Tue, 18 Jun 2024 01:31:48 +0000 (01:31 +0000)]
grow the iso again

6 months agoRename mf_fgets() and cu_fgets() to mf_getline() and cu_getline().
millert [Tue, 18 Jun 2024 00:32:22 +0000 (00:32 +0000)]
Rename mf_fgets() and cu_fgets() to mf_getline() and cu_getline().
These functions now use getline(), not fgets().  From espie@

6 months agoInvalidate the right stack[] member
tb [Mon, 17 Jun 2024 18:54:36 +0000 (18:54 +0000)]
Invalidate the right stack[] member

There was a shift of the index in the for loop, and invalidating the wrong
member could result in a double free in auth_tree_free() on process exit.

ok claudio job

6 months agoPut back NULL checks in crl_get() and build_chain()
tb [Mon, 17 Jun 2024 18:52:50 +0000 (18:52 +0000)]
Put back NULL checks in crl_get() and build_chain()

Turns out filemode still relies on these. Rather than adding to the
spaghetti in filemode.c, begrudgingly put back the NULL checks with
an additional XXX.

ok claudio job

6 months agoDocument the new argument .St -p1003.1-2024 introduced in st.c rev. 1.15
schwarze [Mon, 17 Jun 2024 15:35:33 +0000 (15:35 +0000)]
Document the new argument .St -p1003.1-2024 introduced in st.c rev. 1.15
and polish the description of .St -p1003.1-2008 a bit.
OK job@ jmc@

6 months agoremove one more mention of DSA
naddy [Mon, 17 Jun 2024 13:50:18 +0000 (13:50 +0000)]
remove one more mention of DSA

6 months agoFix typo: s/fetesteexcept/fetestexcept/
tim [Mon, 17 Jun 2024 12:59:28 +0000 (12:59 +0000)]
Fix typo: s/fetesteexcept/fetestexcept/

6 months agoIn vmx(4) TSO must pullup headers into first mbuf.
bluhm [Mon, 17 Jun 2024 11:13:43 +0000 (11:13 +0000)]
In vmx(4) TSO must pullup headers into first mbuf.

Forwarding IPv6 packets from vmx with LRO to vmx with TSO did not
work.  vmx(4) has the requirement that all headers are in the first
mbuf.  ip6_forward() is quite dumb.  It calls m_copym() to create
a mbuf that might be used for sending ICMP6 later.  After passing
the forwarded packet down to ether_encap(), m_prepend() is used to
restore the ethernet header.  As the mbuf cluster has been copied,
it is read only now.  That means m_prepend() does not provide the
empty space at the beginning of the cluster, but allocates a new
mbuf that contains only the ethernet header.  vmx(4) cannot transmit
such a TSO packet and drops it.

Solution is to call m_pullup() in vmxnet3_start().  If we ended up
in such a miserable condition, use the first mbuf in the chain and
move all headers into it.

OK jan@

6 months agoKNF
kettenis [Mon, 17 Jun 2024 09:37:07 +0000 (09:37 +0000)]
KNF