sync with OpenBSD -current
This commit is contained in:
parent
223def2739
commit
ff44de68c3
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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);
|
||||||
|
@ -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:
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
@ -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. */
|
||||||
|
@ -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);
|
||||||
|
@ -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) {
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user