tb [Fri, 18 Oct 2024 17:56:45 +0000 (17:56 +0000)]
Use better naming in ec_curve.c
Rename struct ec_list_element into struct ec_curve. Accordingly, curve_list
becomes struct ec_curve ec_curve_list[]. Adjust internal API to match.
suggested by jsing
tb [Fri, 18 Oct 2024 17:29:24 +0000 (17:29 +0000)]
ec_asn1_test: adjust for rejection of non-builtin curve parameters
tb [Fri, 18 Oct 2024 17:27:07 +0000 (17:27 +0000)]
Enforce that EC Parameters correspond to a builtin curve
EC parameters are very general. While there are some minimal sanity checks,
for the parameters due to DoS risks found in the last decade, the elliptic
curve code is poorly written and a target rich environment for NULL
dereferences, busy loops, expensive computations and whatever other
nastiness you can think of. It is not too hard to come up with parameters
that reach very ugly code. While we have removed for the worst of it (the
"fast" nist code and GF2m come to mind), the code very much resembles the
Augean Stables.
Unfortunately, curve parameters are still in use - even mandatory in some
contexts - for example in machine-readable travel documents signed by ICAO
country signing certification authorities (see ICAO Doc 9303).
To avoid many of these DoS vectors, start enforcing that we know what the
curve parameters are about, namely that they correspond to a builtin curve.
This way we know that the parameters are at least as good as the standards
we implement and checking this is cheap:
Translate curve parameters into the ad hoc representation in the builtin
curve code and check there's a match. That's very cheap since most curves
are distinguished by cofactor and parameter length and we need to use an
actual parameter comparison for at most half a dozen curves, usually only
one or two.
ok jsing
jsing [Fri, 18 Oct 2024 14:45:02 +0000 (14:45 +0000)]
Remove now unused x86cpuid.pl.
jsing [Fri, 18 Oct 2024 14:44:02 +0000 (14:44 +0000)]
Provide crypto_cpu_caps_init() for i386.
This is the same CPU capabilities code that is now used for amd64. Like
amd64 we now only populate OPENSSL_ia32cap_P with bits used by perlasm.
Discussed with tb@
jsing [Fri, 18 Oct 2024 13:38:23 +0000 (13:38 +0000)]
Remove now unused x86_64cpuid.pl.
jsing [Fri, 18 Oct 2024 13:36:24 +0000 (13:36 +0000)]
Provide crypto_cpu_caps_init() for amd64.
This is a CPU capability detection implementation in C, with minimal
inline assembly (for cpuid and xgetbv). This replaces the assembly
mess generated by x86_64cpuid.pl. Rather than populating OPENSSL_ia32cap_P
directly with CPUID output, just set the bits that the remaining
perlasm checks (namely AESNI, AVX, FXSR, INTEL, HT, MMX, PCLMUL, SSE, SSE2
and SSSE3).
ok joshua@ tb@
tobhe [Fri, 18 Oct 2024 12:53:49 +0000 (12:53 +0000)]
Instead of always following up "power on" with a "reset", only
send a single reset during attach. We have discovered that some
devices such as the built-in keyboard on the Thinkpad T14s Gen 6
don't like getting more than one reset sent or they become
unresponsive.
This has been in snaps for a while and hasn't caused any major
regressions so we are confident the extra reset is not needed on
most hardware.
feedback from kettenis@
ok deraadt@ mlarkin@
tb [Fri, 18 Oct 2024 11:12:10 +0000 (11:12 +0000)]
Inline last use of OPENSSL_load_builtin_modules()
This used to be a trivial wrapper of the ASN1_add_oid_module() horror.
It's no longer exported, so it can go away. It moves from the terribly
named file conf_mall.c to the equally terribly named file conf_sap.c.
I have no idea what mall and sap are supposed to mean in this context.
tb [Fri, 18 Oct 2024 10:57:26 +0000 (10:57 +0000)]
Move EC_GROUP_new_curve_GFp() into ec_lib.c
Another single-function file goes away.
tb [Fri, 18 Oct 2024 10:50:26 +0000 (10:50 +0000)]
Merge EC_GROUP_new_curve_GFp() with ec_group_new_curve()
The latter was used for EC_GROUP_new_curve_GF2m() and is now pointless.
ok jsing
tb [Fri, 18 Oct 2024 10:40:31 +0000 (10:40 +0000)]
ec_asn1_test: add secp256k1.m
tb [Fri, 18 Oct 2024 10:12:25 +0000 (10:12 +0000)]
ec_asn1_test: remove last hardcoded wei25519 remnant
tb [Fri, 18 Oct 2024 09:34:20 +0000 (09:34 +0000)]
ec_asn1_test: test Wei25519.2 and Wei25519.-3 as well
Covers a few more corner cases in the elliptic curve code.
tb [Fri, 18 Oct 2024 09:01:44 +0000 (09:01 +0000)]
ec_asn1_test: clean up & refactor; test Wei25519 with simple method
djm [Fri, 18 Oct 2024 05:53:26 +0000 (05:53 +0000)]
mention that LocalForward and RemoteForward can accept Unix domain socket
paths; GHPR115
miod [Fri, 18 Oct 2024 05:52:32 +0000 (05:52 +0000)]
Put the bowels of the various VOP_PRINT routines under
defined(DEBUG) || defined(DIAGNOSTIC) || defined(VFSLCKDEBUG)
as they won't be used otherwise.
Shaves a few bytes off installation kernels.
ok kn@ semarie@
djm [Fri, 18 Oct 2024 05:45:40 +0000 (05:45 +0000)]
remove duplicate check; GHPR392 from Pedro Martelletto
djm [Fri, 18 Oct 2024 05:37:24 +0000 (05:37 +0000)]
allow "-" as output file for moduli screening
based on GHPR393
djm [Fri, 18 Oct 2024 05:32:51 +0000 (05:32 +0000)]
ssh-keyscan doesn't need it's own sshfatal() definition, it can
use the shared one from fatal.c
based on GHPR401 from lengyijun
djm [Fri, 18 Oct 2024 05:14:51 +0000 (05:14 +0000)]
in _ssh_order_hostkeyalgs() consider ECDSA curve type when arranging
the hostkey algorithms. AFAIK this code is unused in OpenSSH, but I
guess others are using it
based on GHPR387 from Pawel Jakub Dawidek
djm [Fri, 18 Oct 2024 05:03:34 +0000 (05:03 +0000)]
require control-escape character sequences passed via the '-e ^x'
commandline to be exactly two characters long. Avoids one by OOB
read if ssh is invoked as "ssh -e^ ..."
Spotted by Maciej Domanski in GHPR368
djm [Fri, 18 Oct 2024 04:30:09 +0000 (04:30 +0000)]
remove addr.[ch] functions that are unused and visbility-restrict
ones that are unused outside the implementation itself; based on
GHPR#282 by tobias@
djm [Fri, 18 Oct 2024 04:14:59 +0000 (04:14 +0000)]
unreachable POLLERR case; from ya0guang via GHPR485
djm [Fri, 18 Oct 2024 04:11:54 +0000 (04:11 +0000)]
s/Sx/Cm/ for external references; from Domen Puncer Kugler via GHPR501
jsg [Fri, 18 Oct 2024 00:08:23 +0000 (00:08 +0000)]
drm/i915/hdcp: fix connector refcounting
From Jani Nikula
55f2bd90b9fba95e929d4c407ffc422597152323 in linux-6.6.y/6.6.57
4cc2718f621a6a57a02581125bb6d914ce74d23b in mainline linux
jsg [Fri, 18 Oct 2024 00:06:16 +0000 (00:06 +0000)]
drm/amd/display: Check null pointer before dereferencing se
From Alex Hung
65b2d49e55fe13ae56da3a7685bdccadca31134a in linux-6.6.y/6.6.57
ff599ef6970ee000fa5bc38d02fa5ff5f3fc7575 in mainline linux
jsg [Fri, 18 Oct 2024 00:02:32 +0000 (00:02 +0000)]
drm/amd/display: Revert "Check HDCP returned status"
From Alex Hung
939b4b2c008d4c620b8127bfd12cb22e40447141 in linux-6.6.y/6.6.57
bc2fe69f16c7122b5dabc294aa2d6065d8da2169 in mainline linux
jsg [Fri, 18 Oct 2024 00:00:40 +0000 (00:00 +0000)]
drm/amd/display: Remove a redundant check in authenticated_dp
From Wenjing Liu
b505e4fc411c1015ff5114b0cca8c9b20ae2f679 in linux-6.6.y/6.6.57
4b22869f76563ce1e10858d2ae3305affa8d4a6a in mainline linux
jsg [Thu, 17 Oct 2024 23:52:27 +0000 (23:52 +0000)]
drm/crtc: fix uninitialized variable use even harder
From Rob Clark
be6c52b059a28ec7f78a135061f2cc16b352ef70 in linux-6.6.y/6.6.57
b6802b61a9d0e99dcfa6fff7c50db7c48a9623d3 in mainline linux
dlg [Thu, 17 Oct 2024 22:44:17 +0000 (22:44 +0000)]
use rw_status instead of interpreting RWL_OWNER to see if a lock is busy.
ok claudio@
kettenis [Thu, 17 Oct 2024 17:58:58 +0000 (17:58 +0000)]
Add pinctrl support.
ok patrick@, phessler@
nicm [Thu, 17 Oct 2024 17:22:01 +0000 (17:22 +0000)]
Switch pane-colors and cursor-style options to be in alphabetical order,
from Teubel Gyorgy, GitHub issue 4191.
nicm [Thu, 17 Oct 2024 17:10:41 +0000 (17:10 +0000)]
Allow attributes in menu style, from Japin Li in GitHub issue 4194.
miod [Thu, 17 Oct 2024 15:52:30 +0000 (15:52 +0000)]
Remove a lot of #include stanzas which used to be required by code found in
this file at some point, but such code now lies comfortably in the Attic.
ok jsg@ mpi@
millert [Thu, 17 Oct 2024 15:38:38 +0000 (15:38 +0000)]
create_tempfile: pass pointer to full pathname to strlcat()
Fixes a potential buffer overrun. Also check strlcpy() and strlcat()
return value to detect truncations. Based on a diff from naddy@.
OK naddy@ tb@ deraadt@
tb [Thu, 17 Oct 2024 14:34:06 +0000 (14:34 +0000)]
Split ec_asn1_parameters2group() into digestible pieces
This becomes a simple wrapper function that currently does three checks:
1. ensure the fieldID is for a prime field
2. check that the purported prime is of reasonable size, extract and
set curve coefficients and point conversion form
3. extract and set generator, order, cofactor and seed.
Sanity checks such as the Hasse bound are dealt with in the EC_GROUP API,
so need not be repeated here. They will become redundant once we enforce
that the parameters represent a builtin curve anyway.
ok jsing
jsing [Thu, 17 Oct 2024 14:27:57 +0000 (14:27 +0000)]
Provide crypto_cpu_caps_init() as a CPU capability detection entry point.
This can be overridden on a per-architecture basis. The default version
calls OPENSSL_cpuid_setup(), which will be eventually replaced/removed.
ok joshua@ tb@
jsing [Thu, 17 Oct 2024 14:09:29 +0000 (14:09 +0000)]
Remove run once code from OPENSSL_cpuid_setup().
OPENSSL_cpuid_setup() is no longer exported and is now only ever run under
pthread_once().
ok joshua@ tb@
claudio [Thu, 17 Oct 2024 09:11:35 +0000 (09:11 +0000)]
Shortcut cursig when called during sleep setup.
Add deep flag as function argument which is used by the sleep API but
nowhere else. Both calls to sleep_signal_check() should skip the ugly
bits of cursig().
In cursig() if deep once it is clear a signal will be taken keep the
signal on the thread siglist and return. sleep_signal_check() will then
return EINTR or ERESTART based on the signal context. There is no reason
to do more in this special case. Especially stop/cont and the ptrace trap
must be skipped here. Once the call makes it to userret the signal will be
picked up again and handled in a safe location.
Stopping singals need some additional logic since we don't want to abort
the sleep just to stop a process. Since our SIGSTOP handling requires
a major rewrite this will be posponed until then.
OK mpi@
dlg [Thu, 17 Oct 2024 08:22:53 +0000 (08:22 +0000)]
regen
dlg [Thu, 17 Oct 2024 08:22:34 +0000 (08:22 +0000)]
Kingston SNV2S nvme device
dlg [Thu, 17 Oct 2024 08:21:51 +0000 (08:21 +0000)]
regen
dlg [Thu, 17 Oct 2024 08:21:23 +0000 (08:21 +0000)]
ampere altra pci ports
tb [Thu, 17 Oct 2024 06:19:06 +0000 (06:19 +0000)]
libssl: rework cert signature security level
This switches to using the X509_get_signature_info() API instead of hand
rolling a part of it. This is slightly tangly since the security level API
is strange. In particular, some failures are passed to the security level
callback so that applications can override them.
This makes the security level API handle RSA-PSS and EdDSA certificates
correctly and the handshake with such can progress a bit further. Of note,
we check that the certs are actually suitable for use in TLS per RFC 8446
contrary to what OpenSSL does.
ok beck jsing
jsg [Thu, 17 Oct 2024 05:37:54 +0000 (05:37 +0000)]
remove unneeded task.h include, missed in rev 1.67
jsg [Thu, 17 Oct 2024 05:10:53 +0000 (05:10 +0000)]
include <dev/ic/bcm2835_dmac.h> not "dev/ic/bcm2835_dmac.h"
jsg [Thu, 17 Oct 2024 05:02:12 +0000 (05:02 +0000)]
remove unneeded if_wg.h and pfsync.h includes
jsg [Thu, 17 Oct 2024 02:20:53 +0000 (02:20 +0000)]
use <machine/asm.h> not "machine/asm.h", for consistency
jsg [Thu, 17 Oct 2024 01:57:18 +0000 (01:57 +0000)]
remove unneeded includes
tb [Wed, 16 Oct 2024 23:58:25 +0000 (23:58 +0000)]
EC ASN.1: add reminder that the simple method might also want testing
tb [Wed, 16 Oct 2024 23:49:49 +0000 (23:49 +0000)]
Implement Wei25519 to exercise some more elliptic curve code
This provides a non-trivial non-builtin curve that is unlikely to ever
become a builtin curve. This exercises the cofactor guessing code and
and ensures that things work as far as they can with a custom OID. The
main reason for adding it is to have a "real-world" example for an
upcoming check that EC parameters represent a builtin curve.
miod [Wed, 16 Oct 2024 18:47:47 +0000 (18:47 +0000)]
a.out is no longer the commonly encountered binary file format, the world has
moved to ELF.
Move the a.out specific defines and macros, but the MID_xxx values, from
<sys/exec.h> to <a.out.h>, and update the few userland binaries which really
need these defines (i.e. boot-related tools for old architectures) to
explicitly include <a.out.h> when needed.
"Fine" deraadt@
miod [Wed, 16 Oct 2024 18:43:42 +0000 (18:43 +0000)]
Deliver SIGTRAP, rather than SIGEMT, when a TADDccTV or TSUBccTV instruction
traps. Such instructions are deprecated in v9 (64-bit) code and should never
occur in real-life code. See v9 manual A.59 and A.60 for details.
CVS ----------------------------------------------------------------------
miod [Wed, 16 Oct 2024 18:40:52 +0000 (18:40 +0000)]
Deliver SIGTRAP, rather than SIGEMT, for trap instructions which are neither
debugger breakpoints nor compiler-generated divide by zero reports.
SIGEMT is a historical curiosity which makes no sense nowadays except on
PDP-11 and VAX hardware.
Discussed with imp@ and visa@ long ago.
dlg [Wed, 16 Oct 2024 11:12:31 +0000 (11:12 +0000)]
cut tun_init() out, it does pointless work.
tun_init turns interface/stack config into a set of flags that
tun(4) keeps in tun_softc sc_flags, but never uses.
ok miod@ kn@
dlg [Wed, 16 Oct 2024 11:03:55 +0000 (11:03 +0000)]
remove SIOCSIFDSTADDR from the network ioctls.
netintro says it's deprecated, and most of our other drivers are
doing fine without it.
ok miod@ kn@ patrick@
tb [Wed, 16 Oct 2024 06:09:45 +0000 (06:09 +0000)]
rpki-client: sprinkle some const
EVP_PKEY_get0_* were made const correct in OpenSSL 3 and now cause the
build of rpki-client to emit warnings. Of course no one is able to see
these warnings because they are hidden in all the deprecation vomit.
Makes rpki-client build cleanly against OpenSSL 3 when configured with
--with-openssl-cflags=-DOPENSSL_SUPPRESS_DEPRECATED.
ok claudio deraadt job
jsg [Wed, 16 Oct 2024 02:32:27 +0000 (02:32 +0000)]
remove unneeded frame.h and riscvreg.h includes
tb [Tue, 15 Oct 2024 21:03:10 +0000 (21:03 +0000)]
rpki-client/openssl: eliminate pointless OpenSSL deprecation vomit
tb [Tue, 15 Oct 2024 19:41:24 +0000 (19:41 +0000)]
rust-openssl: set resolver="2" for workspace
silences an annoying warning
tb [Tue, 15 Oct 2024 17:44:43 +0000 (17:44 +0000)]
Unindent error check in EC_GROUP_set_generator()
claudio [Tue, 15 Oct 2024 15:06:25 +0000 (15:06 +0000)]
Enable sig-stop3 regress test. It should no longer fail now.
claudio [Tue, 15 Oct 2024 13:49:49 +0000 (13:49 +0000)]
Add PS_STOPPED to the flags
claudio [Tue, 15 Oct 2024 13:49:26 +0000 (13:49 +0000)]
Indicate that a process has stopped by setting PS_STOPPED flag
The checks in dowait6 and orphanpg using ps_mainproc are flawed and
fail if the mainproc called pthread_exit before the other threads.
Adding the flag in proc_stop_sweep is racy but the best we have right now.
This fixes regress/sys/kern/signal/sig-stop3.
OK mpi@
claudio [Tue, 15 Oct 2024 12:26:53 +0000 (12:26 +0000)]
Fix runtime calculation. Assiging ts to spc_runtime does not work if ts
is modified.
OK tb@ jca@
claudio [Tue, 15 Oct 2024 11:54:07 +0000 (11:54 +0000)]
Use pr instead of p->p_p like everywhere else in exit1.
jsg [Tue, 15 Oct 2024 09:16:39 +0000 (09:16 +0000)]
remove unneeded pte.h include
tb [Tue, 15 Oct 2024 06:35:59 +0000 (06:35 +0000)]
Switch ec_asn1_group2parameters() to get0_{order,cofactor}()
These are more ergonomic, result in more readable code, avoid a copy and
we no longer ignore a possible memory allocation error due to API misdesign
and bad code.
ok jsing
tb [Tue, 15 Oct 2024 06:27:43 +0000 (06:27 +0000)]
Provide EC_GROUP_get0_cofactor() for internal use
While this is public API in OpenSSL, there are no plans to expose it.
ok jsing
jsg [Tue, 15 Oct 2024 00:41:40 +0000 (00:41 +0000)]
remove struct arpreq from net/if_arp.h
unused since "rewrite to merge arp and routing tables"
in CSRG if_ether.c 7.14 (Berkeley) 06/25/91
used by SIOCSARP, SIOCGARP, SIOCDARP, OSIOCGARP ioctls in Net/2
which were removed before 4.4BSD-Lite
ok sthen@ who tested this with a ports build
deraadt [Tue, 15 Oct 2024 00:08:27 +0000 (00:08 +0000)]
grow i386 media a bit
naddy [Mon, 14 Oct 2024 23:53:34 +0000 (23:53 +0000)]
mention SshdAuthPath option; ok djm@
nicm [Mon, 14 Oct 2024 20:26:45 +0000 (20:26 +0000)]
Set ACS flag for REP. Reported by Romain Francoise, GitHub issue 4182.
tb [Mon, 14 Oct 2024 18:17:11 +0000 (18:17 +0000)]
Make NULL checks in ec_asn1_group2curve() explicit
tb [Mon, 14 Oct 2024 13:16:06 +0000 (13:16 +0000)]
Extend ec_asn1_test to check for correct curve coefficient encoding
tb [Mon, 14 Oct 2024 12:50:18 +0000 (12:50 +0000)]
Fix field element encoding for elliptic curve coefficients
SEC 1, section 2.3.5, is explicit that the encoding of an element of the
field of definition for an elliptic curve needs to be a zero-padded octet
string whose length matches the byte size of the field's degree. So use
BN_bn2binpad() to fix this. Factor things into a simple helper to avoid
copy-pasting.
This gets rid of some of the most grotesque code in this file.
ok jsing
tb [Mon, 14 Oct 2024 12:42:52 +0000 (12:42 +0000)]
Drop an obvious comment and fix indent for setting the seed
Also remove a pointless cast.
ok jsing
tb [Mon, 14 Oct 2024 12:38:11 +0000 (12:38 +0000)]
In ec_asn1_group2curve() rename ok to ret, per usual
ok jsing
jsg [Mon, 14 Oct 2024 12:02:16 +0000 (12:02 +0000)]
remove unneeded vmparam.h include from pte.h
include vmparam.h in process_machdep for USER_SPACE_BITS
jan [Mon, 14 Oct 2024 11:49:34 +0000 (11:49 +0000)]
Fix build w/o SUSPEND option
with tweaks from miod@
ok miod@
jsg [Mon, 14 Oct 2024 10:08:13 +0000 (10:08 +0000)]
remove unneeded device.h include
jsg [Mon, 14 Oct 2024 08:42:39 +0000 (08:42 +0000)]
remove unused struct sigstate; ok miod@
jsg [Mon, 14 Oct 2024 08:26:48 +0000 (08:26 +0000)]
remove duplicate includes and license; feedback and ok miod@
jmc [Mon, 14 Oct 2024 07:05:23 +0000 (07:05 +0000)]
remove notes about unsupported modifiers; from nir lichtman
confirmed by miod
djm [Mon, 14 Oct 2024 03:02:08 +0000 (03:02 +0000)]
regress support for split sshd-auth binary
deraadt [Mon, 14 Oct 2024 02:46:50 +0000 (02:46 +0000)]
sshd-auth also has a relink kit
deraadt [Mon, 14 Oct 2024 02:45:44 +0000 (02:45 +0000)]
sync
jsg [Mon, 14 Oct 2024 02:20:01 +0000 (02:20 +0000)]
change mutex.h include to rwlock.h
missed when dh_mtx changed from mutex to rwlock in rev 1.6
djm [Mon, 14 Oct 2024 01:57:50 +0000 (01:57 +0000)]
Split per-connection sshd-session binary
This splits the user authentication code from the sshd-session
binary into a separate sshd-auth binary. This will be executed by
sshd-session to complete the user authentication phase of the
protocol only.
Splitting this code into a separate binary ensures that the crucial
pre-authentication attack surface has an entirely disjoint address
space from the code used for the rest of the connection. It also
yields a small runtime memory saving as the authentication code will
be unloaded after thhe authentication phase completes.
Joint work with markus@ feedback deraadt@
Tested in snaps since last week
jsg [Mon, 14 Oct 2024 00:47:36 +0000 (00:47 +0000)]
remove unneeded proc.h include
djm [Sun, 13 Oct 2024 22:20:06 +0000 (22:20 +0000)]
don't start the ObscureKeystrokeTiming mitigations if there has been
traffic on a X11 forwarding channel recently.
Should fix X11 forwarding performance problems when this setting is
enabled. Patch from Antonio Larrosa via bz3655
jsg [Sun, 13 Oct 2024 08:25:09 +0000 (08:25 +0000)]
byt -> but; ok tb@
jsg [Sun, 13 Oct 2024 03:35:59 +0000 (03:35 +0000)]
include stdio.h for sscanf() snprintf()
jsg [Sun, 13 Oct 2024 02:27:44 +0000 (02:27 +0000)]
remove unneeded timeout.h include
jsg [Sun, 13 Oct 2024 00:53:21 +0000 (00:53 +0000)]
remove unneeded limits.h and errno.h includes
deraadt [Sun, 13 Oct 2024 00:00:41 +0000 (00:00 +0000)]
Be more eager to install qcpas firmware (more pattern matches)
afresh1 [Sat, 12 Oct 2024 23:56:23 +0000 (23:56 +0000)]
Make fw_update -a mean all
When downloading or installing, not just deleting.
Noticed by Paul de Weerd
Help with manual wording from jmc@
Just fix -a, deraadt@
jsg [Sat, 12 Oct 2024 23:31:14 +0000 (23:31 +0000)]
remove unneeded rwlock.h include
jsg [Sat, 12 Oct 2024 23:18:10 +0000 (23:18 +0000)]
remove unneeded time.h include