sync with OpenBSD -current

This commit is contained in:
purplerain 2024-05-08 17:10:24 +00:00
parent 223def2739
commit ff44de68c3
Signed by: purplerain
GPG Key ID: F42C07F07E2E35B7
17 changed files with 396 additions and 124 deletions

View File

@ -1,4 +1,4 @@
#machdep.allowaperture=2 # See xf86(4) #machdep.allowaperture=2 # See xf86(4)
#machdep.kbdreset=1 # permit console CTRL-ALT-DEL to do a nice halt #machdep.kbdreset=1 # permit console CTRL-ALT-DEL to do a nice halt
#machdep.lidaction=0 # 1=suspend, 2=hibernate laptop upon lid closing #machdep.lidaction=0 # laptop lid closing action: 0=none, 1=suspend, 2=hibernate
#machdep.pwraction=1 # ACPI power button action: 0=none, 1=shutdown, 2=suspend #machdep.pwraction=0 # acpibtn(4) power button action: 0=none, 1=shutdown, 2=suspend

View File

@ -1 +1 @@
#machdep.lidaction=0 # 1=suspend, 2=hibernate laptop upon lid closing #machdep.lidaction=0 # laptop lid closing action: 0=none, 1=suspend, 2=hibernate

View File

@ -1,4 +1,4 @@
#machdep.allowaperture=2 # See xf86(4) #machdep.allowaperture=2 # See xf86(4)
#machdep.apmhalt=1 # 1=powerdown hack, try if halt -p doesn't work #machdep.apmhalt=1 # 1=powerdown hack, try if halt -p doesn't work
#machdep.kbdreset=1 # permit console CTRL-ALT-DEL to do a nice halt #machdep.kbdreset=1 # permit console CTRL-ALT-DEL to do a nice halt
#machdep.lidaction=0 # 1=suspend, 2=hibernate laptop upon lid closing #machdep.lidaction=0 # laptop lid closing action: 0=none, 1=suspend, 2=hibernate

View File

@ -1,4 +1,4 @@
/* $OpenBSD: getrrsetbyname_async.c,v 1.13 2023/03/15 22:12:00 millert Exp $ */ /* $OpenBSD: getrrsetbyname_async.c,v 1.14 2024/05/07 23:40:53 djm Exp $ */
/* /*
* Copyright (c) 2012 Eric Faurot <eric@openbsd.org> * Copyright (c) 2012 Eric Faurot <eric@openbsd.org>
* *
@ -170,7 +170,7 @@ getrrsetbyname_async_run(struct asr_query *as, struct asr_result *ar)
/* The rest of this file is taken from the original implementation. */ /* The rest of this file is taken from the original implementation. */
/* $OpenBSD: getrrsetbyname_async.c,v 1.13 2023/03/15 22:12:00 millert Exp $ */ /* $OpenBSD: getrrsetbyname_async.c,v 1.14 2024/05/07 23:40:53 djm Exp $ */
/* /*
* Copyright (c) 2001 Jakob Schlyter. All rights reserved. * Copyright (c) 2001 Jakob Schlyter. All rights reserved.
@ -334,13 +334,14 @@ get_response(struct asr_result *ar, const char *pkt, int pktlen)
if (rdata) { if (rdata) {
rdata->rdi_length = rr->size; rdata->rdi_length = rr->size;
rdata->rdi_data = malloc(rr->size); if (rr->size != 0) {
rdata->rdi_data = malloc(rr->size);
if (rdata->rdi_data == NULL) { if (rdata->rdi_data == NULL) {
ar->ar_rrset_errno = ERRSET_NOMEMORY; ar->ar_rrset_errno = ERRSET_NOMEMORY;
goto fail; goto fail;
}
memcpy(rdata->rdi_data, rr->rdata, rr->size);
} }
memcpy(rdata->rdi_data, rr->rdata, rr->size);
} }
} }
free_dns_response(response); free_dns_response(response);
@ -552,12 +553,13 @@ parse_dns_rrsection(const u_char *answer, int size, const u_char **cp,
/* rdata itself */ /* rdata itself */
NEED(curr->size); NEED(curr->size);
curr->rdata = malloc(curr->size); if (curr->size != 0) {
if (curr->rdata == NULL) { if ((curr->rdata = malloc(curr->size)) == NULL) {
free_dns_rr(head); free_dns_rr(head);
return (NULL); return (NULL);
}
memcpy(curr->rdata, *cp, curr->size);
} }
memcpy(curr->rdata, *cp, curr->size);
*cp += curr->size; *cp += curr->size;
} }
#undef NEED #undef NEED

View File

@ -1,4 +1,4 @@
.\" $OpenBSD: PEM_read_bio_PrivateKey.3,v 1.21 2023/04/25 18:57:57 tb Exp $ .\" $OpenBSD: PEM_read_bio_PrivateKey.3,v 1.22 2024/05/07 20:40:07 tb Exp $
.\" full merge up to: .\" full merge up to:
.\" OpenSSL man3/PEM_read_bio_PrivateKey.pod 18bad535 Apr 9 15:13:55 2019 +0100 .\" OpenSSL man3/PEM_read_bio_PrivateKey.pod 18bad535 Apr 9 15:13:55 2019 +0100
.\" OpenSSL man3/PEM_read_CMS.pod 83cf7abf May 29 13:07:08 2018 +0100 .\" OpenSSL man3/PEM_read_CMS.pod 83cf7abf May 29 13:07:08 2018 +0100
@ -51,7 +51,7 @@
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
.\" OF THE POSSIBILITY OF SUCH DAMAGE. .\" OF THE POSSIBILITY OF SUCH DAMAGE.
.\" .\"
.Dd $Mdocdate: April 25 2023 $ .Dd $Mdocdate: May 7 2024 $
.Dt PEM_READ_BIO_PRIVATEKEY 3 .Dt PEM_READ_BIO_PRIVATEKEY 3
.Os .Os
.Sh NAME .Sh NAME
@ -1034,7 +1034,7 @@ are used as the passphrase and
.Fa cb .Fa cb
is ignored. is ignored.
.Ss PEM encryption format .Ss PEM encryption format
This old These old
.Sy PrivateKey .Sy PrivateKey
routines use a non-standard technique for encryption. routines use a non-standard technique for encryption.
.Pp .Pp

View File

@ -1,4 +1,4 @@
/* $OpenBSD: x509_req.c,v 1.33 2023/04/25 09:46:36 job Exp $ */ /* $OpenBSD: x509_req.c,v 1.36 2024/05/08 08:20:08 tb Exp $ */
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
* All rights reserved. * All rights reserved.
* *
@ -170,64 +170,33 @@ X509_REQ_check_private_key(X509_REQ *x, EVP_PKEY *k)
} }
LCRYPTO_ALIAS(X509_REQ_check_private_key); LCRYPTO_ALIAS(X509_REQ_check_private_key);
/* It seems several organisations had the same idea of including a list of
* extensions in a certificate request. There are at least two OIDs that are
* used and there may be more: so the list is configurable.
*/
static int ext_nid_list[] = {NID_ext_req, NID_ms_ext_req, NID_undef};
static int *ext_nids = ext_nid_list;
int int
X509_REQ_extension_nid(int req_nid) X509_REQ_extension_nid(int nid)
{ {
int i, nid; return nid == NID_ext_req || nid == NID_ms_ext_req;
for (i = 0; ; i++) {
nid = ext_nids[i];
if (nid == NID_undef)
return 0;
else if (req_nid == nid)
return 1;
}
} }
LCRYPTO_ALIAS(X509_REQ_extension_nid); LCRYPTO_ALIAS(X509_REQ_extension_nid);
int *
X509_REQ_get_extension_nids(void)
{
return ext_nids;
}
LCRYPTO_ALIAS(X509_REQ_get_extension_nids);
void
X509_REQ_set_extension_nids(int *nids)
{
ext_nids = nids;
}
LCRYPTO_ALIAS(X509_REQ_set_extension_nids);
STACK_OF(X509_EXTENSION) * STACK_OF(X509_EXTENSION) *
X509_REQ_get_extensions(X509_REQ *req) X509_REQ_get_extensions(X509_REQ *req)
{ {
X509_ATTRIBUTE *attr; X509_ATTRIBUTE *attr;
ASN1_TYPE *ext = NULL; ASN1_TYPE *ext = NULL;
int idx, *pnid; int idx;
const unsigned char *p; const unsigned char *p;
if (req == NULL || req->req_info == NULL || ext_nids == NULL) if (req == NULL || req->req_info == NULL)
return NULL;
if ((idx = X509_REQ_get_attr_by_NID(req, NID_ext_req, -1)) == -1)
idx = X509_REQ_get_attr_by_NID(req, NID_ms_ext_req, -1);
if (idx == -1)
return NULL;
if ((attr = X509_REQ_get_attr(req, idx)) == NULL)
return NULL;
if ((ext = X509_ATTRIBUTE_get0_type(attr, 0)) == NULL)
return NULL; return NULL;
for (pnid = ext_nids; *pnid != NID_undef; pnid++) {
idx = X509_REQ_get_attr_by_NID(req, *pnid, -1);
if (idx == -1)
continue;
attr = X509_REQ_get_attr(req, idx);
ext = X509_ATTRIBUTE_get0_type(attr, 0);
break;
}
if (ext == NULL)
return sk_X509_EXTENSION_new_null();
if (ext->type != V_ASN1_SEQUENCE) if (ext->type != V_ASN1_SEQUENCE)
return NULL; return NULL;
p = ext->value.sequence->data; p = ext->value.sequence->data;
@ -354,3 +323,22 @@ i2d_re_X509_REQ_tbs(X509_REQ *req, unsigned char **pp)
return i2d_X509_REQ_INFO(req->req_info, pp); return i2d_X509_REQ_INFO(req->req_info, pp);
} }
LCRYPTO_ALIAS(i2d_re_X509_REQ_tbs); LCRYPTO_ALIAS(i2d_re_X509_REQ_tbs);
/*
* XXX - remove the API below in the next major bump
*/
int *
X509_REQ_get_extension_nids(void)
{
X509error(ERR_R_DISABLED);
return NULL;
}
LCRYPTO_ALIAS(X509_REQ_get_extension_nids);
void
X509_REQ_set_extension_nids(int *nids)
{
X509error(ERR_R_DISABLED);
}
LCRYPTO_ALIAS(X509_REQ_set_extension_nids);

View File

@ -1,4 +1,4 @@
.\" $OpenBSD: ssl.3,v 1.22 2022/09/17 16:03:21 kn Exp $ .\" $OpenBSD: ssl.3,v 1.23 2024/05/08 09:41:33 tb Exp $
.\" full merge up to: OpenSSL e330f55d Nov 11 00:51:04 2016 +0100 .\" full merge up to: OpenSSL e330f55d Nov 11 00:51:04 2016 +0100
.\" selective merge up to: OpenSSL 322755cc Sep 1 08:40:51 2018 +0800 .\" selective merge up to: OpenSSL 322755cc Sep 1 08:40:51 2018 +0800
.\" .\"
@ -51,16 +51,17 @@
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
.\" OF THE POSSIBILITY OF SUCH DAMAGE. .\" OF THE POSSIBILITY OF SUCH DAMAGE.
.\" .\"
.Dd $Mdocdate: September 17 2022 $ .Dd $Mdocdate: May 8 2024 $
.Dt SSL 3 .Dt SSL 3
.Os .Os
.Sh NAME .Sh NAME
.Nm ssl .Nm ssl
.Nd OpenSSL SSL/TLS library .Nd OpenSSL TLS library
.Sh DESCRIPTION .Sh DESCRIPTION
The OpenSSL The
.Nm ssl .Nm ssl
library implements the Transport Layer Security (TLS v1) protocols. library implements the Transport Layer Security (TLS) protocol,
the successor to the secure sockets layer (SSL) protocol.
.Pp .Pp
An An
.Vt SSL_CTX .Vt SSL_CTX
@ -93,7 +94,7 @@ are used to read and write data on the TLS/SSL connection.
.Xr SSL_shutdown 3 .Xr SSL_shutdown 3
can be used to shut down the TLS/SSL connection. can be used to shut down the TLS/SSL connection.
.Sh DATA STRUCTURES .Sh DATA STRUCTURES
Currently the OpenSSL Currently the
.Nm ssl .Nm ssl
library functions deal with the following data structures: library functions deal with the following data structures:
.Bl -tag -width Ds .Bl -tag -width Ds
@ -131,7 +132,7 @@ At run-time the application usually deals with this structure which has
links to mostly all other structures. links to mostly all other structures.
.El .El
.Sh HEADER FILES .Sh HEADER FILES
Currently the OpenSSL Currently the
.Nm ssl .Nm ssl
library provides the following C header files containing the prototypes for the library provides the following C header files containing the prototypes for the
data structures and functions: data structures and functions:

View File

@ -1,4 +1,4 @@
/* $OpenBSD: lhash_test.c,v 1.1 2024/05/06 14:31:25 jsing Exp $ */ /* $OpenBSD: lhash_test.c,v 1.2 2024/05/08 15:13:23 jsing Exp $ */
/* /*
* Copyright (c) 2024 Joel Sing <jsing@openbsd.org> * Copyright (c) 2024 Joel Sing <jsing@openbsd.org>
* *
@ -21,8 +21,182 @@
#include <openssl/lhash.h> #include <openssl/lhash.h>
/*
* Need to add test coverage for:
* - custom hash function
* - custom comparison function
*/
static void static void
test_doall_fn(void *arg1, void *arg2) test_doall_count(void *arg1, void *arg2)
{
int *count = arg2;
(*count)++;
}
static int
test_lhash(void)
{
const char *a = "a", *b = "b", *c = "c", *d = "d";
const char *a2 = "a", *b2 = "b";
_LHASH *lh;
int count;
int failed = 1;
if ((lh = lh_new(NULL, NULL)) == NULL)
goto failure;
/*
* Another amazing API... both a successful insert and a failure will
* return NULL. The only way you can tell the difference is to follow
* with a call to lh_error().
*/
if (lh_retrieve(lh, "a") != NULL || lh_error(lh) != 0) {
fprintf(stderr, "FAIL: retrieved a before insert\n");
goto failure;
}
if (lh_insert(lh, (void *)a) != NULL || lh_error(lh) != 0) {
fprintf(stderr, "FAIL: insert a\n");
goto failure;
}
if (lh_retrieve(lh, "a") != a) {
fprintf(stderr, "FAIL: failed to retrieve a\n");
goto failure;
}
if (lh_retrieve(lh, "b") != NULL || lh_error(lh) != 0) {
fprintf(stderr, "FAIL: retrieved b before insert\n");
goto failure;
}
if (lh_insert(lh, (void *)b) != NULL || lh_error(lh) != 0) {
fprintf(stderr, "FAIL: insert b\n");
goto failure;
}
if (lh_retrieve(lh, "b") != b) {
fprintf(stderr, "FAIL: failed to retrieve b\n");
goto failure;
}
if (lh_retrieve(lh, "c") != NULL || lh_error(lh) != 0) {
fprintf(stderr, "FAIL: retrieved c before insert\n");
goto failure;
}
if (lh_insert(lh, (void *)c) != NULL || lh_error(lh) != 0) {
fprintf(stderr, "FAIL: insert c\n");
goto failure;
}
if (lh_retrieve(lh, "c") != c) {
fprintf(stderr, "FAIL: failed to retrieve c\n");
goto failure;
}
if (lh_retrieve(lh, "d") != NULL || lh_error(lh) != 0) {
fprintf(stderr, "FAIL: retrieved d before insert\n");
goto failure;
}
if (lh_insert(lh, (void *)d) != NULL || lh_error(lh) != 0) {
fprintf(stderr, "FAIL: insert d\n");
goto failure;
}
if (lh_retrieve(lh, "d") != d) {
fprintf(stderr, "FAIL: failed to retrieve d\n");
goto failure;
}
if (lh_num_items(lh) != 4) {
fprintf(stderr, "FAIL: lh_num_items() = %ld, want 4\n",
lh_num_items(lh));
goto failure;
}
/* Insert should replace. */
if (lh_insert(lh, (void *)a2) != a || lh_error(lh) != 0) {
fprintf(stderr, "FAIL: replace a\n");
goto failure;
}
if (lh_retrieve(lh, "a") != a2) {
fprintf(stderr, "FAIL: failed to retrieve a2\n");
goto failure;
}
if (lh_insert(lh, (void *)b2) != b || lh_error(lh) != 0) {
fprintf(stderr, "FAIL: replace b\n");
goto failure;
}
if (lh_retrieve(lh, "b") != b2) {
fprintf(stderr, "FAIL: failed to retrieve b2\n");
goto failure;
}
if (lh_num_items(lh) != 4) {
fprintf(stderr, "FAIL: lh_num_items() = %ld, want 4\n",
lh_num_items(lh));
goto failure;
}
/* Do all. */
count = 0;
lh_doall_arg(lh, test_doall_count, &count);
if (count != 4) {
fprintf(stderr, "FAIL: lh_doall_arg failed (count = %d)\n",
count);
goto failure;
}
/* Delete. */
if (lh_delete(lh, "z") != NULL || lh_error(lh) != 0) {
fprintf(stderr, "FAIL: delete succeeded for z\n");
goto failure;
}
if (lh_delete(lh, "a") != a2 || lh_error(lh) != 0) {
fprintf(stderr, "FAIL: delete failed for a\n");
goto failure;
}
if (lh_retrieve(lh, "a") != NULL || lh_error(lh) != 0) {
fprintf(stderr, "FAIL: retrieved a after deletion\n");
goto failure;
}
if (lh_delete(lh, "b") != b2 || lh_error(lh) != 0) {
fprintf(stderr, "FAIL: delete failed for b\n");
goto failure;
}
if (lh_retrieve(lh, "b") != NULL || lh_error(lh) != 0) {
fprintf(stderr, "FAIL: retrieved b after deletion\n");
goto failure;
}
if (lh_delete(lh, "c") != c || lh_error(lh) != 0) {
fprintf(stderr, "FAIL: delete failed for c\n");
goto failure;
}
if (lh_retrieve(lh, "c") != NULL || lh_error(lh) != 0) {
fprintf(stderr, "FAIL: retrieved c after deletion\n");
goto failure;
}
if (lh_delete(lh, "d") != d || lh_error(lh) != 0) {
fprintf(stderr, "FAIL: delete failed for d\n");
goto failure;
}
if (lh_retrieve(lh, "d") != NULL || lh_error(lh) != 0) {
fprintf(stderr, "FAIL: retrieved d after deletion\n");
goto failure;
}
if (lh_num_items(lh) != 0) {
fprintf(stderr, "FAIL: lh_num_items() = %ld, want 0\n",
lh_num_items(lh));
goto failure;
}
failed = 0;
failure:
lh_free(lh);
return failed;
}
static void
test_doall_fn(void *arg1)
{ {
} }
@ -38,13 +212,97 @@ test_lhash_doall(void)
/* Call doall multiple times while linked hash is empty. */ /* Call doall multiple times while linked hash is empty. */
for (i = 0; i < 100; i++) for (i = 0; i < 100; i++)
lh_doall_arg(lh, test_doall_fn, NULL); lh_doall(lh, test_doall_fn);
lh_free(lh);
failed = 0; failed = 0;
failure: failure:
lh_free(lh);
return failed;
}
static void
test_doall_delete_some(void *arg1, void *arg2)
{
void *data;
if (arc4random_uniform(32) != 0)
return;
data = lh_delete(arg2, arg1);
free(data);
}
static void
test_doall_delete_all(void *arg1, void *arg2)
{
void *data;
data = lh_delete(arg2, arg1);
free(data);
}
static int
test_lhash_load(void)
{
uint8_t c3 = 1, c2 = 1, c1 = 1, c0 = 1;
_LHASH *lh;
char *data = NULL;
int i, j;
int failed = 1;
if ((lh = lh_new(NULL, NULL)) == NULL)
goto failure;
for (i = 0; i < 1024; i++) {
for (j = 0; j < 1024; j++) {
if ((data = calloc(1, 128)) == NULL)
goto failure;
data[0] = c0;
data[1] = c1;
data[2] = c2;
data[3] = c3;
if (++c0 == 0) {
c0++;
c1++;
}
if (c1 == 0) {
c1++;
c2++;
}
if (c2 == 0) {
c2++;
c3++;
}
if (lh_insert(lh, data) != NULL || lh_error(lh) != 0) {
fprintf(stderr, "FAIL: lh_insert() failed\n");
goto failure;
}
data = NULL;
}
lh_doall_arg(lh, test_doall_delete_some, lh);
}
/* We should have ~31,713 entries. */
if (lh_num_items(lh) < 31000 || lh_num_items(lh) > 33000) {
fprintf(stderr, "FAIL: unexpected number of entries (%ld)\n",
lh_num_items(lh));
goto failure;
}
failed = 0;
failure:
if (lh != NULL)
lh_doall_arg(lh, test_doall_delete_all, lh);
lh_free(lh);
free(data);
return failed; return failed;
} }
@ -53,7 +311,9 @@ main(int argc, char **argv)
{ {
int failed = 0; int failed = 0;
failed |= test_lhash();
failed |= test_lhash_doall(); failed |= test_lhash_doall();
failed |= test_lhash_load();
return failed; return failed;
} }

View File

@ -1,4 +1,4 @@
# $OpenBSD: symbols.awk,v 1.3 2024/04/17 22:48:17 tb Exp $ # $OpenBSD: symbols.awk,v 1.4 2024/05/08 06:54:43 tb Exp $
# Copyright (c) 2018,2020,2023 Theo Buehler <tb@openbsd.org> # Copyright (c) 2018,2020,2023 Theo Buehler <tb@openbsd.org>
# #
@ -21,9 +21,6 @@ BEGIN {
printf("#include <openssl/dtls1.h>\n") printf("#include <openssl/dtls1.h>\n")
printf("#include <openssl/ssl.h>\n") printf("#include <openssl/ssl.h>\n")
printf("#include <openssl/ssl2.h>\n")
printf("#include <openssl/ssl23.h>\n")
printf("#include <openssl/ssl3.h>\n")
printf("#include <openssl/tls1.h>\n\n") printf("#include <openssl/tls1.h>\n\n")
printf("#include <openssl/srtp.h>\n\n") # depends on ssl.h printf("#include <openssl/srtp.h>\n\n") # depends on ssl.h

View File

@ -1,4 +1,4 @@
.\" $OpenBSD: intro.3,v 1.97 2023/02/20 16:08:37 jmc Exp $ .\" $OpenBSD: intro.3,v 1.98 2024/05/08 08:24:23 tb Exp $
.\" $NetBSD: intro.3,v 1.5 1995/05/10 22:46:24 jtc Exp $ .\" $NetBSD: intro.3,v 1.5 1995/05/10 22:46:24 jtc Exp $
.\" .\"
.\" Copyright (c) 1980, 1991, 1993 .\" Copyright (c) 1980, 1991, 1993
@ -30,7 +30,7 @@
.\" .\"
.\" @(#)intro.3 8.1 (Berkeley) 6/5/93 .\" @(#)intro.3 8.1 (Berkeley) 6/5/93
.\" .\"
.Dd $Mdocdate: February 20 2023 $ .Dd $Mdocdate: May 8 2024 $
.Dt INTRO 3 .Dt INTRO 3
.Os .Os
.Sh NAME .Sh NAME
@ -100,9 +100,8 @@ An implementation of the Concise Binary Object Representation
encoding format defined in RFC 7049. encoding format defined in RFC 7049.
.Pp .Pp
.It libcrypto Pq Fl lcrypto .It libcrypto Pq Fl lcrypto
The OpenSSL crypto library. Provides functionality such as symmetric encryption, public key cryptography,
Implements a range of cryptographic algorithms, digests, message authentication codes,
providing such functionality as symmetric encryption, public key cryptography,
and certificate handling. and certificate handling.
See See
.Xr crypto 3 . .Xr crypto 3 .
@ -338,11 +337,9 @@ See
.Xr sio_open 3 . .Xr sio_open 3 .
.Pp .Pp
.It libssl Pq Fl lssl .It libssl Pq Fl lssl
The OpenSSL ssl library implements the Secure Sockets Layer Implements the Transport Layer Security
.Pq SSL v3 .Pq TLS
and Transport Layer Security protocol, the successor to the Secure Sockets Layer protocol.
.Pq TLS v1
protocols.
See See
.Xr ssl 3 . .Xr ssl 3 .
.Pp .Pp

View File

@ -1,4 +1,4 @@
/* $OpenBSD: if_iwx.c,v 1.183 2024/04/13 23:44:11 jsg Exp $ */ /* $OpenBSD: if_iwx.c,v 1.184 2024/05/08 14:03:54 stsp Exp $ */
/* /*
* Copyright (c) 2014, 2016 genua gmbh <info@genua.de> * Copyright (c) 2014, 2016 genua gmbh <info@genua.de>
@ -8323,6 +8323,9 @@ iwx_run(struct iwx_softc *sc)
return err; return err;
} }
#endif #endif
if (ic->ic_opmode == IEEE80211_M_MONITOR)
return 0;
err = iwx_power_mac_update_mode(sc, in); err = iwx_power_mac_update_mode(sc, in);
if (err) { if (err) {
printf("%s: could not update MAC power (error %d)\n", printf("%s: could not update MAC power (error %d)\n",
@ -8330,9 +8333,6 @@ iwx_run(struct iwx_softc *sc)
return err; return err;
} }
if (ic->ic_opmode == IEEE80211_M_MONITOR)
return 0;
/* Start at lowest available bit-rate. Firmware will raise. */ /* Start at lowest available bit-rate. Firmware will raise. */
in->in_ni.ni_txrate = 0; in->in_ni.ni_txrate = 0;
in->in_ni.ni_txmcs = 0; in->in_ni.ni_txmcs = 0;

View File

@ -1,4 +1,4 @@
/* $OpenBSD: if_iwxreg.h,v 1.52 2023/10/06 15:15:41 stsp Exp $ */ /* $OpenBSD: if_iwxreg.h,v 1.53 2024/05/08 14:03:54 stsp Exp $ */
/*- /*-
* Based on BSD-licensed source modules in the Linux iwlwifi driver, * Based on BSD-licensed source modules in the Linux iwlwifi driver,
@ -1760,7 +1760,7 @@ struct iwx_gen3_bc_tbl_entry {
#define IWX_DQA_CMD_QUEUE 0 #define IWX_DQA_CMD_QUEUE 0
#define IWX_DQA_AUX_QUEUE 1 #define IWX_DQA_AUX_QUEUE 1
#define IWX_DQA_INJECT_MONITOR_QUEUE 2 /* used in monitor mode only */ #define IWX_DQA_INJECT_MONITOR_QUEUE 1 /* used in monitor mode only */
#define IWX_DQA_MGMT_QUEUE 1 /* default queue other modes */ #define IWX_DQA_MGMT_QUEUE 1 /* default queue other modes */
/* Reserve 8 DQA Tx queues for QoS data frames. */ /* Reserve 8 DQA Tx queues for QoS data frames. */

View File

@ -1,4 +1,4 @@
/* $OpenBSD: kern_sig.c,v 1.326 2024/05/07 10:46:35 claudio Exp $ */ /* $OpenBSD: kern_sig.c,v 1.327 2024/05/08 13:05:33 claudio Exp $ */
/* $NetBSD: kern_sig.c,v 1.54 1996/04/22 01:38:32 christos Exp $ */ /* $NetBSD: kern_sig.c,v 1.54 1996/04/22 01:38:32 christos Exp $ */
/* /*
@ -921,7 +921,7 @@ void
ptsignal(struct proc *p, int signum, enum signal_type type) ptsignal(struct proc *p, int signum, enum signal_type type)
{ {
int s, prop; int s, prop;
sig_t action; sig_t action, altaction = SIG_DFL;
sigset_t mask, sigmask; sigset_t mask, sigmask;
int *siglist; int *siglist;
struct process *pr = p->p_p; struct process *pr = p->p_p;
@ -1026,6 +1026,8 @@ ptsignal(struct proc *p, int signum, enum signal_type type)
return; return;
if (sigmask & mask) { if (sigmask & mask) {
action = SIG_HOLD; action = SIG_HOLD;
if (sigcatch & mask)
altaction = SIG_CATCH;
} else if (sigcatch & mask) { } else if (sigcatch & mask) {
action = SIG_CATCH; action = SIG_CATCH;
} else { } else {
@ -1050,15 +1052,8 @@ ptsignal(struct proc *p, int signum, enum signal_type type)
* marked at thread level. * marked at thread level.
*/ */
siglist = (type == SPROCESS) ? &pr->ps_siglist : &p->p_siglist; siglist = (type == SPROCESS) ? &pr->ps_siglist : &p->p_siglist;
if (prop & SA_CONT) { if (prop & (SA_CONT | SA_STOP))
siglist = &p->p_siglist; siglist = &p->p_siglist;
atomic_clearbits_int(siglist, STOPSIGMASK);
}
if (prop & SA_STOP) {
siglist = &p->p_siglist;
atomic_clearbits_int(siglist, CONTSIGMASK);
atomic_clearbits_int(&p->p_flag, P_CONTINUED);
}
/* /*
* XXX delay processing of SA_STOP signals unless action == SIG_DFL? * XXX delay processing of SA_STOP signals unless action == SIG_DFL?
@ -1068,16 +1063,6 @@ ptsignal(struct proc *p, int signum, enum signal_type type)
if (q != p) if (q != p)
ptsignal(q, signum, SPROPAGATED); ptsignal(q, signum, SPROPAGATED);
/*
* Defer further processing for signals which are held,
* except that stopped processes must be continued by SIGCONT.
*/
if (action == SIG_HOLD && ((prop & SA_CONT) == 0 ||
p->p_stat != SSTOP)) {
atomic_setbits_int(siglist, mask);
return;
}
SCHED_LOCK(s); SCHED_LOCK(s);
switch (p->p_stat) { switch (p->p_stat) {
@ -1107,6 +1092,25 @@ ptsignal(struct proc *p, int signum, enum signal_type type)
sigmask = READ_ONCE(p->p_sigmask); sigmask = READ_ONCE(p->p_sigmask);
if (sigmask & mask) if (sigmask & mask)
goto out; goto out;
else if (action == SIG_HOLD) {
/* signal got unmasked, get proper action */
action = altaction;
if (action == SIG_DFL) {
if (prop & SA_KILL && pr->ps_nice > NZERO)
pr->ps_nice = NZERO;
/*
* Discard tty stop signals sent to an
* orphaned process group, see above.
*/
if (prop & SA_TTYSTOP &&
pr->ps_pgrp->pg_jobc == 0) {
SCHED_UNLOCK(s);
return;
}
}
}
/* /*
* If SIGCONT is default (or ignored) and process is * If SIGCONT is default (or ignored) and process is
@ -1181,6 +1185,13 @@ ptsignal(struct proc *p, int signum, enum signal_type type)
goto out; goto out;
} }
/*
* Defer further processing for signals which are held,
* except that stopped processes must be continued by SIGCONT.
*/
if (action == SIG_HOLD)
goto out;
if (prop & SA_STOP) { if (prop & SA_STOP) {
/* /*
* Already stopped, don't need to stop again. * Already stopped, don't need to stop again.
@ -1201,6 +1212,9 @@ ptsignal(struct proc *p, int signum, enum signal_type type)
goto out; goto out;
case SONPROC: case SONPROC:
if (action == SIG_HOLD)
goto out;
/* set siglist before issuing the ast */ /* set siglist before issuing the ast */
atomic_setbits_int(siglist, mask); atomic_setbits_int(siglist, mask);
mask = 0; mask = 0;
@ -1229,6 +1243,14 @@ out:
/* finally adjust siglist */ /* finally adjust siglist */
if (mask) if (mask)
atomic_setbits_int(siglist, mask); atomic_setbits_int(siglist, mask);
if (prop & SA_CONT) {
atomic_clearbits_int(siglist, STOPSIGMASK);
}
if (prop & SA_STOP) {
atomic_clearbits_int(siglist, CONTSIGMASK);
atomic_clearbits_int(&p->p_flag, P_CONTINUED);
}
SCHED_UNLOCK(s); SCHED_UNLOCK(s);
if (wakeparent) if (wakeparent)
wakeup(pr->ps_pptr); wakeup(pr->ps_pptr);

View File

@ -1,4 +1,4 @@
/* $OpenBSD: ieee80211_output.c,v 1.138 2024/04/14 03:26:25 jsg Exp $ */ /* $OpenBSD: ieee80211_output.c,v 1.139 2024/05/08 14:02:59 stsp Exp $ */
/* $NetBSD: ieee80211_output.c,v 1.13 2004/05/31 11:02:55 dyoung Exp $ */ /* $NetBSD: ieee80211_output.c,v 1.13 2004/05/31 11:02:55 dyoung Exp $ */
/*- /*-
@ -569,6 +569,9 @@ ieee80211_encap(struct ifnet *ifp, struct mbuf *m, struct ieee80211_node **pni)
} }
fallback: fallback:
if (ic->ic_opmode == IEEE80211_M_MONITOR)
goto bad;
if (m->m_len < sizeof(struct ether_header)) { if (m->m_len < sizeof(struct ether_header)) {
m = m_pullup(m, sizeof(struct ether_header)); m = m_pullup(m, sizeof(struct ether_header));
if (m == NULL) { if (m == NULL) {

View File

@ -1,4 +1,4 @@
/* $OpenBSD: ip_input.c,v 1.393 2024/04/16 12:56:39 bluhm Exp $ */ /* $OpenBSD: ip_input.c,v 1.394 2024/05/08 13:01:30 bluhm Exp $ */
/* $NetBSD: ip_input.c,v 1.30 1996/03/16 23:53:58 christos Exp $ */ /* $NetBSD: ip_input.c,v 1.30 1996/03/16 23:53:58 christos Exp $ */
/* /*
@ -587,6 +587,7 @@ ip_input_if(struct mbuf **mp, int *offp, int nxt, int af, struct ifnet *ifp)
ip_forward(m, ifp, &ro, pfrdr); ip_forward(m, ifp, &ro, pfrdr);
*mp = NULL; *mp = NULL;
rtfree(ro.ro_rt);
return IPPROTO_DONE; return IPPROTO_DONE;
bad: bad:
nxt = IPPROTO_DONE; nxt = IPPROTO_DONE;

View File

@ -1,4 +1,4 @@
/* $OpenBSD: ip6_input.c,v 1.261 2024/04/16 12:56:39 bluhm Exp $ */ /* $OpenBSD: ip6_input.c,v 1.262 2024/05/08 13:01:30 bluhm Exp $ */
/* $KAME: ip6_input.c,v 1.188 2001/03/29 05:34:31 itojun Exp $ */ /* $KAME: ip6_input.c,v 1.188 2001/03/29 05:34:31 itojun Exp $ */
/* /*
@ -615,6 +615,7 @@ ip6_input_if(struct mbuf **mp, int *offp, int nxt, int af, struct ifnet *ifp)
ip6_forward(m, &ro, pfrdr); ip6_forward(m, &ro, pfrdr);
*mp = NULL; *mp = NULL;
rtfree(ro.ro_rt);
return IPPROTO_DONE; return IPPROTO_DONE;
bad: bad:
nxt = IPPROTO_DONE; nxt = IPPROTO_DONE;

View File

@ -1,4 +1,4 @@
.\" $OpenBSD: openssl.1,v 1.155 2024/01/26 11:58:37 job Exp $ .\" $OpenBSD: openssl.1,v 1.156 2024/05/07 21:00:18 tb Exp $
.\" ==================================================================== .\" ====================================================================
.\" Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved. .\" Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved.
.\" .\"
@ -110,7 +110,7 @@
.\" copied and put under another distribution licence .\" copied and put under another distribution licence
.\" [including the GNU Public Licence.] .\" [including the GNU Public Licence.]
.\" .\"
.Dd $Mdocdate: January 26 2024 $ .Dd $Mdocdate: May 7 2024 $
.Dt OPENSSL 1 .Dt OPENSSL 1
.Os .Os
.Sh NAME .Sh NAME
@ -136,7 +136,7 @@
.Nm OpenSSL .Nm OpenSSL
is a cryptography toolkit implementing the is a cryptography toolkit implementing the
Transport Layer Security Transport Layer Security
.Pq TLS v1 .Pq TLS
network protocol, network protocol,
as well as related cryptography standards. as well as related cryptography standards.
.Pp .Pp