From 8e8dccb6dd860b8fafe011cfffdc0d55cd8e5536 Mon Sep 17 00:00:00 2001 From: purplerain Date: Fri, 8 Dec 2023 20:04:57 +0000 Subject: [PATCH] sync with OpenBSD -current --- libexec/ld.so/tib.c | 6 +- libexec/ld.so/util.h | 4 +- regress/lib/libcrypto/evp/evp_test.c | 101 ++++++++++++++++++++++++++- share/man/man4/ugold.4 | 5 +- sys/dev/usb/ugold.c | 5 +- sys/sys/exec_elf.h | 3 +- usr.bin/ssh/sshsig.c | 7 +- 7 files changed, 115 insertions(+), 16 deletions(-) diff --git a/libexec/ld.so/tib.c b/libexec/ld.so/tib.c index bb27fb05a..d64eb0533 100644 --- a/libexec/ld.so/tib.c +++ b/libexec/ld.so/tib.c @@ -32,10 +32,8 @@ __dso_hidden void *allocate_tib(size_t); -#define MAX(a,b) (((a)>(b))?(a):(b)) - #ifdef TIB_EXTRA_ALIGN -# define TIB_ALIGN MAX(__alignof__(struct tib), TIB_EXTRA_ALIGN) +# define TIB_ALIGN MAXIMUM(__alignof__(struct tib), TIB_EXTRA_ALIGN) #else # define TIB_ALIGN __alignof__(struct tib) #endif @@ -170,7 +168,7 @@ allocate_tls_offset(Elf_Addr msize, Elf_Addr align, int for_exe) * - need to offset the TIB 12 bytes from the start * - to place ths TLS data at offset 64 */ - static_tls_align = MAX(align, TIB_ALIGN); + static_tls_align = MAXIMUM(align, TIB_ALIGN); static_tls_align_offset = ELF_ROUND(sizeof(struct tib), static_tls_align) - sizeof(struct tib); diff --git a/libexec/ld.so/util.h b/libexec/ld.so/util.h index 6a9147202..6b4f3aaef 100644 --- a/libexec/ld.so/util.h +++ b/libexec/ld.so/util.h @@ -1,4 +1,4 @@ -/* $OpenBSD: util.h,v 1.39 2023/08/15 06:26:34 guenther Exp $ */ +/* $OpenBSD: util.h,v 1.40 2023/12/08 12:58:27 deraadt Exp $ */ /* * Copyright (c) 1998 Todd C. Miller @@ -35,6 +35,8 @@ #include #include /* for NULL */ +#define MAXIMUM(a,b) (((a)>(b))?(a):(b)) + #ifndef __boot # if DO_CLEAN_BOOT # define __boot __attribute__((section(".boot.text"))) diff --git a/regress/lib/libcrypto/evp/evp_test.c b/regress/lib/libcrypto/evp/evp_test.c index 9b6e18eec..b1f7d59c2 100644 --- a/regress/lib/libcrypto/evp/evp_test.c +++ b/regress/lib/libcrypto/evp/evp_test.c @@ -1,4 +1,4 @@ -/* $OpenBSD: evp_test.c,v 1.9 2023/11/27 22:39:26 tb Exp $ */ +/* $OpenBSD: evp_test.c,v 1.10 2023/12/08 08:30:04 tb Exp $ */ /* * Copyright (c) 2022 Joel Sing * Copyright (c) 2023 Theo Buehler @@ -439,7 +439,6 @@ evp_do_all_cb_common(const char *descr, const void *ptr, const char *from, fprintf(stderr, "FAIL: %ss %s and %s out of order\n", descr, previous, from); } - arg->previous = from; } static void @@ -533,6 +532,103 @@ evp_aliases_test(void) return failure; } +static void +obj_name_cb(const OBJ_NAME *obj_name, void *do_all_arg) +{ + struct do_all_arg *arg = do_all_arg; + struct do_all_arg arg_copy = *arg; + const char *previous = arg->previous; + const char *descr = "OBJ_NAME unknown"; + + assert(obj_name->name != NULL); + arg->previous = obj_name->name; + + if (obj_name->type == OBJ_NAME_TYPE_CIPHER_METH) { + descr = "OBJ_NAME cipher"; + + if (obj_name->alias == 0) { + const EVP_CIPHER *cipher; + + if ((cipher = EVP_get_cipherbyname(obj_name->name)) != + (const EVP_CIPHER *)obj_name->data) { + arg->failure |= 1; + fprintf(stderr, "FAIL: %s by name %p != %p\n", + descr, cipher, obj_name->data); + } + + evp_do_all_cb_common(descr, obj_name->data, + obj_name->name, NULL, &arg_copy); + } else if (obj_name->alias == OBJ_NAME_ALIAS) { + evp_cipher_aliases_cb(NULL, obj_name->name, + obj_name->data, &arg_copy); + } else { + fprintf(stderr, "FAIL %s %s: unexpected alias value %d\n", + descr, obj_name->name, obj_name->alias); + arg->failure |= 1; + } + } else if (obj_name->type == OBJ_NAME_TYPE_MD_METH) { + descr = "OBJ_NAME digest"; + + if (obj_name->alias == 0) { + const EVP_MD *evp_md; + + if ((evp_md = EVP_get_digestbyname(obj_name->name)) != + (const EVP_MD *)obj_name->data) { + arg->failure |= 1; + fprintf(stderr, "FAIL: %s by name %p != %p\n", + descr, evp_md, obj_name->data); + } + + evp_do_all_cb_common(descr, obj_name->data, + obj_name->name, NULL, &arg_copy); + } else if (obj_name->alias == OBJ_NAME_ALIAS) { + evp_digest_aliases_cb(NULL, obj_name->name, + obj_name->data, &arg_copy); + } else { + fprintf(stderr, "FAIL: %s %s: unexpected alias value %d\n", + descr, obj_name->name, obj_name->alias); + arg->failure |= 1; + } + } else { + fprintf(stderr, "FAIL: unexpected OBJ_NAME type %d\n", + obj_name->type); + arg->failure |= 1; + } + + if (previous != NULL && strcmp(previous, obj_name->name) >= 0) { + arg->failure |= 1; + fprintf(stderr, "FAIL: %ss %s and %s out of order\n", descr, + previous, obj_name->name); + } + + + arg->failure |= arg_copy.failure; +} + +static int +obj_name_do_all_test(void) +{ + struct do_all_arg arg; + int failure = 0; + + memset(&arg, 0, sizeof(arg)); + /* XXX - replace with OBJ_NAME_do_all() after next bump. */ + OBJ_NAME_do_all_sorted(OBJ_NAME_TYPE_CIPHER_METH, obj_name_cb, &arg); + failure |= arg.failure; + + memset(&arg, 0, sizeof(arg)); + /* XXX - replace with OBJ_NAME_do_all() after next bump. */ + OBJ_NAME_do_all_sorted(OBJ_NAME_TYPE_MD_METH, obj_name_cb, &arg); + failure |= arg.failure; + + memset(&arg, 0, sizeof(arg)); + /* XXX - replace with OBJ_NAME_do_all() after next bump. */ + OBJ_NAME_do_all_sorted(OBJ_NAME_TYPE_PKEY_METH, obj_name_cb, &arg); + failure |= arg.failure; + + return failure; +} + int main(int argc, char **argv) { @@ -543,6 +639,7 @@ main(int argc, char **argv) failed |= evp_pkey_iv_len_test(); failed |= evp_do_all_test(); failed |= evp_aliases_test(); + failed |= obj_name_do_all_test(); OPENSSL_cleanup(); diff --git a/share/man/man4/ugold.4 b/share/man/man4/ugold.4 index 78e328ac7..43df0892d 100644 --- a/share/man/man4/ugold.4 +++ b/share/man/man4/ugold.4 @@ -1,4 +1,4 @@ -.\" $OpenBSD: ugold.4,v 1.8 2023/11/30 20:08:23 miod Exp $ +.\" $OpenBSD: ugold.4,v 1.9 2023/12/08 06:33:48 miod Exp $ .\" .\" Copyright (c) 2013 Takayoshi SASANO .\" Copyright (c) 2013 Martin Pieuchot @@ -16,7 +16,7 @@ .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.Dd $Mdocdate: November 30 2023 $ +.Dd $Mdocdate: December 8 2023 $ .Dt UGOLD 4 .Os .Sh NAME @@ -41,6 +41,7 @@ driver: .It Li "RDing TEMPerGold_V3.4" Ta "1 Temperature" .It Li "RDing TEMPerHum1V1.0" Ta "1 Temperature and 1 Humidity" .It Li "RDing TEMPerHum1V1.2" Ta "1 Temperature and 1 Humidity" +.It Li "RDing TEMPerHUM_V3.9" Ta "1 Temperature and 1 Humidity" .It Li "RDing TEMPerHUM_V4.0" Ta "1 Temperature and 1 Humidity" .It Li "RDing TEMPer1F_H1V1.5F" Ta "1 Temperature and 1 Humidity" .It Li "RDing TEMPerX_V3.1" Ta "1 Temperature and 1 Humidity" diff --git a/sys/dev/usb/ugold.c b/sys/dev/usb/ugold.c index a5bd162e4..9d1a30b2d 100644 --- a/sys/dev/usb/ugold.c +++ b/sys/dev/usb/ugold.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ugold.c,v 1.24 2023/11/30 20:08:23 miod Exp $ */ +/* $OpenBSD: ugold.c,v 1.25 2023/12/08 06:33:48 miod Exp $ */ /* * Copyright (c) 2013 Takayoshi SASANO @@ -453,7 +453,8 @@ ugold_si700x_type(struct ugold_softc *sc) } if (sc->sc_model_len >= 9 && memcmp(sc->sc_model, "TEMPerHUM", 9) == 0) { - if (memcmp(sc->sc_model + 9, "_V4.0 ", 16 - 9) == 0) { + if (memcmp(sc->sc_model + 9, "_V3.9 ", 16 - 9) == 0 || + memcmp(sc->sc_model + 9, "_V4.0 ", 16 - 9) == 0) { sc->sc_type = UGOLD_TYPE_TEMPERX; descr = "temperx (temperature and humidity)"; goto identified; diff --git a/sys/sys/exec_elf.h b/sys/sys/exec_elf.h index 8e0f22501..127c5d40c 100644 --- a/sys/sys/exec_elf.h +++ b/sys/sys/exec_elf.h @@ -1,4 +1,4 @@ -/* $OpenBSD: exec_elf.h,v 1.101 2023/06/10 19:30:48 kettenis Exp $ */ +/* $OpenBSD: exec_elf.h,v 1.102 2023/12/08 13:58:41 deraadt Exp $ */ /* * Copyright (c) 1995, 1996 Erik Theisen. All rights reserved. * @@ -483,6 +483,7 @@ typedef struct { #define PT_OPENBSD_RANDOMIZE 0x65a3dbe6 /* fill with random data */ #define PT_OPENBSD_WXNEEDED 0x65a3dbe7 /* program performs W^X violations */ #define PT_OPENBSD_NOBTCFI 0x65a3dbe8 /* no branch target CFI */ +#define PT_OPENBSD_SYSCALLS 0x65a3dbe9 /* syscall locations */ #define PT_OPENBSD_BOOTDATA 0x65a41be6 /* section for boot arguments */ /* Segment flags - p_flags */ diff --git a/usr.bin/ssh/sshsig.c b/usr.bin/ssh/sshsig.c index b35801531..268940b03 100644 --- a/usr.bin/ssh/sshsig.c +++ b/usr.bin/ssh/sshsig.c @@ -1,4 +1,4 @@ -/* $OpenBSD: sshsig.c,v 1.33 2023/09/06 23:18:15 djm Exp $ */ +/* $OpenBSD: sshsig.c,v 1.34 2023/12/08 09:18:39 markus Exp $ */ /* * Copyright (c) 2019 Google LLC * @@ -1119,12 +1119,11 @@ sshsig_match_principals(const char *path, const char *principal, if (ret == 0) { if (nprincipals == 0) ret = SSH_ERR_KEY_NOT_FOUND; + if (nprincipalsp != 0) + *nprincipalsp = nprincipals; if (principalsp != NULL) { *principalsp = principals; principals = NULL; /* transferred */ - } - if (nprincipalsp != 0) { - *nprincipalsp = nprincipals; nprincipals = 0; } }