sync with OpenBSD -current
This commit is contained in:
parent
e0e35f76e8
commit
acf2ed1690
32 changed files with 354 additions and 212 deletions
|
@ -1,4 +1,4 @@
|
|||
.\" $OpenBSD: BUF_MEM_new.3,v 1.18 2023/07/27 06:20:45 tb Exp $
|
||||
.\" $OpenBSD: BUF_MEM_new.3,v 1.19 2024/07/24 08:57:58 tb Exp $
|
||||
.\" OpenSSL doc/crypto/buffer.pod 18edda0f Sep 20 03:28:54 2000 +0000
|
||||
.\" not merged: 74924dcb, 58e3457a, 21b0fa91, 7644a9ae
|
||||
.\" OpenSSL doc/crypto/BUF_MEM_new.pod 53934822 Jun 9 16:39:19 2016 -0400
|
||||
|
@ -52,7 +52,7 @@
|
|||
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||
.\" OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
.\"
|
||||
.Dd $Mdocdate: July 27 2023 $
|
||||
.Dd $Mdocdate: July 24 2024 $
|
||||
.Dt BUF_MEM_NEW 3
|
||||
.Os
|
||||
.Sh NAME
|
||||
|
@ -90,8 +90,7 @@ The library uses the
|
|||
.Vt BUF_MEM
|
||||
structure defined in buffer.h:
|
||||
.Bd -literal
|
||||
typedef struct buf_mem_st
|
||||
{
|
||||
typedef struct buf_mem_st {
|
||||
size_t length; /* current number of bytes */
|
||||
char *data;
|
||||
size_t max; /* size of buffer */
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# $OpenBSD: Makefile,v 1.3 2016/03/30 06:38:43 jmc Exp $
|
||||
# $OpenBSD: Makefile,v 1.4 2024/07/24 08:22:26 yasuoka Exp $
|
||||
|
||||
LIB= radius
|
||||
SRCS= radius.c radius_attr.c radius_msgauth.c radius_userpass.c \
|
||||
|
@ -9,7 +9,8 @@ CFLAGS+= -Wall
|
|||
|
||||
MAN= radius_new_request_packet.3
|
||||
|
||||
.include <bsd.lib.mk>
|
||||
VERSION_SCRIPT= Symbols.map
|
||||
SYMBOL_LIST= ${.CURDIR}/Symbols.list
|
||||
|
||||
includes:
|
||||
@cd ${.CURDIR}; for i in $(INCS); do \
|
||||
|
@ -19,3 +20,10 @@ includes:
|
|||
echo $$j; \
|
||||
eval "$$j"; \
|
||||
done
|
||||
|
||||
${VERSION_SCRIPT}: ${SYMBOL_LIST}
|
||||
{ printf '{\n\tglobal:\n'; \
|
||||
sed '/^[._a-zA-Z]/s/$$/;/; s/^/ /' ${SYMBOL_LIST}; \
|
||||
printf '\n\tlocal:\n\t\t*;\n};\n'; } >$@.tmp && mv $@.tmp $@
|
||||
|
||||
.include <bsd.lib.mk>
|
||||
|
|
89
lib/libradius/Symbols.list
Normal file
89
lib/libradius/Symbols.list
Normal file
|
@ -0,0 +1,89 @@
|
|||
radius_check_accounting_request_authenticator
|
||||
radius_check_message_authenticator
|
||||
radius_check_response_authenticator
|
||||
radius_convert_packet
|
||||
radius_decrypt_mppe_key_attr
|
||||
radius_decrypt_user_password_attr
|
||||
radius_del_attr_all
|
||||
radius_del_vs_attr_all
|
||||
radius_delete_packet
|
||||
radius_encrypt_mppe_key_attr
|
||||
radius_encrypt_user_password_attr
|
||||
radius_get_authenticator
|
||||
radius_get_authenticator_retval
|
||||
radius_get_code
|
||||
radius_get_data
|
||||
radius_get_eap_msk
|
||||
radius_get_id
|
||||
radius_get_ipv4_attr
|
||||
radius_get_ipv6_attr
|
||||
radius_get_length
|
||||
radius_get_mppe_recv_key_attr
|
||||
radius_get_mppe_send_key_attr
|
||||
radius_get_raw_attr
|
||||
radius_get_raw_attr_cat
|
||||
radius_get_raw_attr_ptr
|
||||
radius_get_request_authenticator_retval
|
||||
radius_get_request_packet
|
||||
radius_get_string_attr
|
||||
radius_get_uint16_attr
|
||||
radius_get_uint32_attr
|
||||
radius_get_uint64_attr
|
||||
radius_get_user_password_attr
|
||||
radius_get_vs_ipv4_attr
|
||||
radius_get_vs_ipv6_attr
|
||||
radius_get_vs_raw_attr
|
||||
radius_get_vs_raw_attr_cat
|
||||
radius_get_vs_raw_attr_ptr
|
||||
radius_get_vs_string_attr
|
||||
radius_get_vs_uint16_attr
|
||||
radius_get_vs_uint32_attr
|
||||
radius_get_vs_uint64_attr
|
||||
radius_has_attr
|
||||
radius_has_vs_attr
|
||||
radius_new_request_packet
|
||||
radius_new_response_packet
|
||||
radius_put_ipv4_attr
|
||||
radius_put_ipv6_attr
|
||||
radius_put_message_authenticator
|
||||
radius_put_mppe_recv_key_attr
|
||||
radius_put_mppe_send_key_attr
|
||||
radius_put_raw_attr
|
||||
radius_put_raw_attr_cat
|
||||
radius_put_string_attr
|
||||
radius_put_uint16_attr
|
||||
radius_put_uint32_attr
|
||||
radius_put_uint64_attr
|
||||
radius_put_user_password_attr
|
||||
radius_put_vs_ipv4_attr
|
||||
radius_put_vs_ipv6_attr
|
||||
radius_put_vs_raw_attr
|
||||
radius_put_vs_raw_attr_cat
|
||||
radius_put_vs_string_attr
|
||||
radius_put_vs_uint16_attr
|
||||
radius_put_vs_uint32_attr
|
||||
radius_put_vs_uint64_attr
|
||||
radius_recv
|
||||
radius_recvfrom
|
||||
radius_recvmsg
|
||||
radius_send
|
||||
radius_sendmsg
|
||||
radius_sendto
|
||||
radius_set_accounting_request_authenticator
|
||||
radius_set_id
|
||||
radius_set_ipv4_attr
|
||||
radius_set_ipv6_attr
|
||||
radius_set_message_authenticator
|
||||
radius_set_raw_attr
|
||||
radius_set_request_packet
|
||||
radius_set_response_authenticator
|
||||
radius_set_uint16_attr
|
||||
radius_set_uint32_attr
|
||||
radius_set_uint64_attr
|
||||
radius_set_vs_ipv4_attr
|
||||
radius_set_vs_ipv6_attr
|
||||
radius_set_vs_raw_attr
|
||||
radius_set_vs_uint16_attr
|
||||
radius_set_vs_uint32_attr
|
||||
radius_set_vs_uint64_attr
|
||||
radius_update_id
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: radius_attr.c,v 1.2 2023/07/08 08:53:26 yasuoka Exp $ */
|
||||
/* $OpenBSD: radius_attr.c,v 1.3 2024/07/24 08:19:16 yasuoka Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2009 Internet Initiative Japan Inc.
|
||||
|
@ -199,6 +199,31 @@ radius_put_raw_attr(RADIUS_PACKET * packet, uint8_t type, const void *buf,
|
|||
return (0);
|
||||
}
|
||||
|
||||
int
|
||||
radius_unshift_raw_attr(RADIUS_PACKET * packet, uint8_t type, const void *buf,
|
||||
size_t length)
|
||||
{
|
||||
RADIUS_ATTRIBUTE *newattr;
|
||||
|
||||
if (length > 255 - 2)
|
||||
return (-1);
|
||||
|
||||
if (radius_ensure_add_capacity(packet, length + 2) != 0)
|
||||
return (-1);
|
||||
|
||||
memmove(packet->pdata->attributes + length + 2,
|
||||
packet->pdata->attributes,
|
||||
radius_get_length(packet) - sizeof(RADIUS_PACKET_DATA));
|
||||
|
||||
newattr = ATTRS_BEGIN(packet->pdata);
|
||||
newattr->type = type;
|
||||
newattr->length = length + 2;
|
||||
memcpy(newattr->data, buf, length);
|
||||
packet->pdata->length = htons(radius_get_length(packet) + length + 2);
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
int
|
||||
radius_put_vs_raw_attr(RADIUS_PACKET * packet, uint32_t vendor, uint8_t vtype,
|
||||
const void *buf, size_t length)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: radius_local.h,v 1.1 2015/07/20 23:52:29 yasuoka Exp $ */
|
||||
/* $OpenBSD: radius_local.h,v 1.2 2024/07/24 08:19:16 yasuoka Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2009 Internet Initiative Japan Inc.
|
||||
|
@ -74,6 +74,8 @@ struct _RADIUS_PACKET {
|
|||
#define ATTRS_ADVANCE(x) (x = ATTRS_NEXT(x))
|
||||
|
||||
int radius_ensure_add_capacity(RADIUS_PACKET * packet, size_t capacity);
|
||||
int radius_unshift_raw_attr(RADIUS_PACKET * packet, uint8_t type,
|
||||
const void *buf, size_t length);
|
||||
|
||||
#define ROUNDUP(a, b) ((((a) + (b) - 1) / (b)) * (b))
|
||||
#define MINIMUM(a, b) (((a) < (b))? (a) : (b))
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: radius_msgauth.c,v 1.2 2021/12/16 17:32:51 tb Exp $ */
|
||||
/* $OpenBSD: radius_msgauth.c,v 1.3 2024/07/24 08:19:16 yasuoka Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2009 Internet Initiative Japan Inc.
|
||||
|
@ -112,7 +112,7 @@ radius_put_message_authenticator(RADIUS_PACKET * packet, const char *secret)
|
|||
* because content of Message-Authenticator attribute is assumed zero
|
||||
* during calculation.
|
||||
*/
|
||||
if (radius_put_raw_attr(packet, RADIUS_TYPE_MESSAGE_AUTHENTICATOR,
|
||||
if (radius_unshift_raw_attr(packet, RADIUS_TYPE_MESSAGE_AUTHENTICATOR,
|
||||
ma, sizeof(ma)) != 0)
|
||||
return (-1);
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
.\" $OpenBSD: radius_new_request_packet.3,v 1.6 2022/09/11 06:38:11 jmc Exp $
|
||||
.\" $OpenBSD: radius_new_request_packet.3,v 1.7 2024/07/24 08:19:16 yasuoka Exp $
|
||||
.\"
|
||||
.\" Copyright (c) 2009 Internet Initiative Japan Inc.
|
||||
.\" All rights reserved.
|
||||
|
@ -24,7 +24,7 @@
|
|||
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.Dd $Mdocdate: September 11 2022 $
|
||||
.Dd $Mdocdate: July 24 2024 $
|
||||
.Dt RADIUS_NEW_REQUEST_PACKET 3
|
||||
.Os
|
||||
.Sh NAME
|
||||
|
@ -285,6 +285,10 @@ There are helper functions for Message-Authenticator attributes.
|
|||
and
|
||||
.Fn radius_set_message_authenticator
|
||||
calculate a Message-Authenticator and put or set it to packet, respectively.
|
||||
When
|
||||
.Fn radius_put_message_authenticator
|
||||
is used,
|
||||
the Message-Authenticator attribute is placed at the first in the attributes.
|
||||
.Pp
|
||||
.Fn radius_check_message_authenticator
|
||||
checks a Message-Authenticator.
|
||||
|
@ -368,9 +372,9 @@ NULL on failure.
|
|||
.Sh HISTORY
|
||||
The
|
||||
.Nm radius+
|
||||
library was first written by UMEZAWA Takeshi in 2002 for the ID gateway service
|
||||
of Internet Initiative Japan.
|
||||
YASUOKA Masahiko added support for Message-Authentication attributes in 2008.
|
||||
library was first written by UMEZAWA Takeshi in 2002 for the ID Gateway service
|
||||
of Internet Initiative Japan Inc.
|
||||
YASUOKA Masahiko added support for Message-Authenticator attributes in 2008.
|
||||
.Ox
|
||||
project rewrote C++ code to pure C code in 2010.
|
||||
The
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
major=1
|
||||
major=2
|
||||
minor=0
|
||||
|
|
|
@ -472,9 +472,18 @@ sioctl_sun_pollfd(struct sioctl_hdl *addr, struct pollfd *pfd, int events)
|
|||
{
|
||||
struct sioctl_sun_hdl *hdl = (struct sioctl_sun_hdl *)addr;
|
||||
|
||||
hdl->events = events;
|
||||
|
||||
/*
|
||||
* The audio(4) driver doesn't support POLLOUT, so if it is
|
||||
* requested, don't set the struct pollfd. The AUDIO_MIXER_WRITE
|
||||
* ioctl never blocks, so just return POLLOUT in sioctl_sun_revents().
|
||||
*/
|
||||
if (events & POLLOUT)
|
||||
return 0;
|
||||
|
||||
pfd->fd = hdl->fd;
|
||||
pfd->events = POLLIN;
|
||||
hdl->events = events;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -485,6 +494,9 @@ sioctl_sun_revents(struct sioctl_hdl *arg, struct pollfd *pfd)
|
|||
struct volume *vol;
|
||||
int idx, n;
|
||||
|
||||
if (hdl->events & POLLOUT)
|
||||
return POLLOUT;
|
||||
|
||||
if (pfd->revents & POLLIN) {
|
||||
while (1) {
|
||||
n = read(hdl->fd, &idx, sizeof(int));
|
||||
|
@ -514,5 +526,5 @@ sioctl_sun_revents(struct sioctl_hdl *arg, struct pollfd *pfd)
|
|||
return POLLHUP;
|
||||
}
|
||||
}
|
||||
return hdl->events & POLLOUT;
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: d1_lib.c,v 1.64 2022/11/26 16:08:55 tb Exp $ */
|
||||
/* $OpenBSD: d1_lib.c,v 1.65 2024/07/23 14:40:53 jsing Exp $ */
|
||||
/*
|
||||
* DTLS implementation written by Nagendra Modadugu
|
||||
* (nagendra@cs.stanford.edu) for the OpenSSL project 2005.
|
||||
|
@ -250,27 +250,6 @@ dtls1_ctrl(SSL *s, int cmd, long larg, void *parg)
|
|||
return (ret);
|
||||
}
|
||||
|
||||
/*
|
||||
* As it's impossible to use stream ciphers in "datagram" mode, this
|
||||
* simple filter is designed to disengage them in DTLS. Unfortunately
|
||||
* there is no universal way to identify stream SSL_CIPHER, so we have
|
||||
* to explicitly list their SSL_* codes. Currently RC4 is the only one
|
||||
* available, but if new ones emerge, they will have to be added...
|
||||
*/
|
||||
const SSL_CIPHER *
|
||||
dtls1_get_cipher(unsigned int u)
|
||||
{
|
||||
const SSL_CIPHER *cipher;
|
||||
|
||||
if ((cipher = ssl3_get_cipher(u)) == NULL)
|
||||
return NULL;
|
||||
|
||||
if (cipher->algorithm_enc == SSL_RC4)
|
||||
return NULL;
|
||||
|
||||
return cipher;
|
||||
}
|
||||
|
||||
void
|
||||
dtls1_start_timer(SSL *s)
|
||||
{
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: s3_lib.c,v 1.256 2024/07/22 14:47:15 jsing Exp $ */
|
||||
/* $OpenBSD: s3_lib.c,v 1.257 2024/07/23 14:40:53 jsing Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -1127,12 +1127,12 @@ ssl3_num_ciphers(void)
|
|||
}
|
||||
|
||||
const SSL_CIPHER *
|
||||
ssl3_get_cipher(unsigned int u)
|
||||
ssl3_get_cipher_by_index(int idx)
|
||||
{
|
||||
if (u < SSL3_NUM_CIPHERS)
|
||||
return (&(ssl3_ciphers[SSL3_NUM_CIPHERS - 1 - u]));
|
||||
else
|
||||
return (NULL);
|
||||
if (idx < 0 || idx >= SSL3_NUM_CIPHERS)
|
||||
return NULL;
|
||||
|
||||
return &ssl3_ciphers[idx];
|
||||
}
|
||||
|
||||
static int
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: ssl_ciph.c,v 1.146 2024/07/22 14:47:15 jsing Exp $ */
|
||||
/* $OpenBSD: ssl_ciph.c,v 1.147 2024/07/23 14:40:53 jsing Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -576,22 +576,6 @@ ll_append_head(CIPHER_ORDER **head, CIPHER_ORDER *curr,
|
|||
*head = curr;
|
||||
}
|
||||
|
||||
/* XXX beck: remove this in a followon to removing GOST */
|
||||
static void
|
||||
ssl_cipher_get_disabled(unsigned long *mkey, unsigned long *auth,
|
||||
unsigned long *enc, unsigned long *mac, unsigned long *ssl)
|
||||
{
|
||||
*mkey = 0;
|
||||
*auth = 0;
|
||||
*enc = 0;
|
||||
*mac = 0;
|
||||
*ssl = 0;
|
||||
|
||||
#ifdef SSL_FORBID_ENULL
|
||||
*enc |= SSL_eNULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
static void
|
||||
ssl_cipher_collect_ciphers(const SSL_METHOD *ssl_method, int num_of_ciphers,
|
||||
unsigned long disabled_mkey, unsigned long disabled_auth,
|
||||
|
@ -608,10 +592,15 @@ ssl_cipher_collect_ciphers(const SSL_METHOD *ssl_method, int num_of_ciphers,
|
|||
* a linked list with at most num entries.
|
||||
*/
|
||||
|
||||
/* Get the initial list of ciphers */
|
||||
/*
|
||||
* Get the initial list of ciphers, iterating backwards over the
|
||||
* cipher list - the list is ordered by cipher value and we currently
|
||||
* hope that ciphers with higher cipher values are preferable...
|
||||
*/
|
||||
co_list_num = 0; /* actual count of ciphers */
|
||||
for (i = 0; i < num_of_ciphers; i++) {
|
||||
c = ssl_method->get_cipher(i);
|
||||
for (i = num_of_ciphers - 1; i >= 0; i--) {
|
||||
c = ssl3_get_cipher_by_index(i);
|
||||
|
||||
/*
|
||||
* Drop any invalid ciphers and any which use unavailable
|
||||
* algorithms.
|
||||
|
@ -1153,11 +1142,19 @@ ssl_create_cipher_list(const SSL_METHOD *ssl_method,
|
|||
if (rule_str == NULL || cipher_list == NULL)
|
||||
goto err;
|
||||
|
||||
/*
|
||||
* To reduce the work to do we only want to process the compiled
|
||||
* in algorithms, so we first get the mask of disabled ciphers.
|
||||
*/
|
||||
ssl_cipher_get_disabled(&disabled_mkey, &disabled_auth, &disabled_enc, &disabled_mac, &disabled_ssl);
|
||||
disabled_mkey = 0;
|
||||
disabled_auth = 0;
|
||||
disabled_enc = 0;
|
||||
disabled_mac = 0;
|
||||
disabled_ssl = 0;
|
||||
|
||||
#ifdef SSL_FORBID_ENULL
|
||||
disabled_enc |= SSL_eNULL;
|
||||
#endif
|
||||
|
||||
/* DTLS cannot be used with stream ciphers. */
|
||||
if (ssl_method->dtls)
|
||||
disabled_enc |= SSL_RC4;
|
||||
|
||||
/*
|
||||
* Now we have to collect the available ciphers from the compiled
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: ssl_local.h,v 1.22 2024/07/22 14:47:15 jsing Exp $ */
|
||||
/* $OpenBSD: ssl_local.h,v 1.23 2024/07/23 14:40:54 jsing Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -379,8 +379,6 @@ struct ssl_method_st {
|
|||
int peek);
|
||||
int (*ssl_write_bytes)(SSL *s, int type, const void *buf_, int len);
|
||||
|
||||
const SSL_CIPHER *(*get_cipher)(unsigned int ncipher);
|
||||
|
||||
unsigned int enc_flags; /* SSL_ENC_FLAG_* */
|
||||
};
|
||||
|
||||
|
@ -1290,7 +1288,7 @@ int ssl3_send_alert(SSL *s, int level, int desc);
|
|||
int ssl3_get_req_cert_types(SSL *s, CBB *cbb);
|
||||
int ssl3_get_message(SSL *s, int st1, int stn, int mt, long max);
|
||||
int ssl3_num_ciphers(void);
|
||||
const SSL_CIPHER *ssl3_get_cipher(unsigned int u);
|
||||
const SSL_CIPHER *ssl3_get_cipher_by_index(int idx);
|
||||
const SSL_CIPHER *ssl3_get_cipher_by_value(uint16_t value);
|
||||
int ssl3_renegotiate(SSL *ssl);
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: ssl_methods.c,v 1.31 2023/07/08 16:40:13 beck Exp $ */
|
||||
/* $OpenBSD: ssl_methods.c,v 1.32 2024/07/23 14:40:54 jsing Exp $ */
|
||||
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
||||
* All rights reserved.
|
||||
*
|
||||
|
@ -77,7 +77,6 @@ static const SSL_METHOD DTLS_method_data = {
|
|||
.ssl_pending = ssl3_pending,
|
||||
.ssl_read_bytes = dtls1_read_bytes,
|
||||
.ssl_write_bytes = dtls1_write_app_data_bytes,
|
||||
.get_cipher = dtls1_get_cipher,
|
||||
.enc_flags = TLSV1_2_ENC_FLAGS,
|
||||
};
|
||||
|
||||
|
@ -98,7 +97,6 @@ static const SSL_METHOD DTLS_client_method_data = {
|
|||
.ssl_pending = ssl3_pending,
|
||||
.ssl_read_bytes = dtls1_read_bytes,
|
||||
.ssl_write_bytes = dtls1_write_app_data_bytes,
|
||||
.get_cipher = dtls1_get_cipher,
|
||||
.enc_flags = TLSV1_2_ENC_FLAGS,
|
||||
};
|
||||
|
||||
|
@ -119,7 +117,6 @@ static const SSL_METHOD DTLSv1_method_data = {
|
|||
.ssl_pending = ssl3_pending,
|
||||
.ssl_read_bytes = dtls1_read_bytes,
|
||||
.ssl_write_bytes = dtls1_write_app_data_bytes,
|
||||
.get_cipher = dtls1_get_cipher,
|
||||
.enc_flags = TLSV1_1_ENC_FLAGS,
|
||||
};
|
||||
|
||||
|
@ -140,7 +137,6 @@ static const SSL_METHOD DTLSv1_client_method_data = {
|
|||
.ssl_pending = ssl3_pending,
|
||||
.ssl_read_bytes = dtls1_read_bytes,
|
||||
.ssl_write_bytes = dtls1_write_app_data_bytes,
|
||||
.get_cipher = dtls1_get_cipher,
|
||||
.enc_flags = TLSV1_1_ENC_FLAGS,
|
||||
};
|
||||
|
||||
|
@ -161,7 +157,6 @@ static const SSL_METHOD DTLSv1_2_method_data = {
|
|||
.ssl_pending = ssl3_pending,
|
||||
.ssl_read_bytes = dtls1_read_bytes,
|
||||
.ssl_write_bytes = dtls1_write_app_data_bytes,
|
||||
.get_cipher = dtls1_get_cipher,
|
||||
.enc_flags = TLSV1_2_ENC_FLAGS,
|
||||
};
|
||||
|
||||
|
@ -182,7 +177,6 @@ static const SSL_METHOD DTLSv1_2_client_method_data = {
|
|||
.ssl_pending = ssl3_pending,
|
||||
.ssl_read_bytes = dtls1_read_bytes,
|
||||
.ssl_write_bytes = dtls1_write_app_data_bytes,
|
||||
.get_cipher = dtls1_get_cipher,
|
||||
.enc_flags = TLSV1_2_ENC_FLAGS,
|
||||
};
|
||||
|
||||
|
@ -266,7 +260,6 @@ static const SSL_METHOD TLS_method_data = {
|
|||
.ssl_pending = tls13_legacy_pending,
|
||||
.ssl_read_bytes = tls13_legacy_read_bytes,
|
||||
.ssl_write_bytes = tls13_legacy_write_bytes,
|
||||
.get_cipher = ssl3_get_cipher,
|
||||
.enc_flags = TLSV1_3_ENC_FLAGS,
|
||||
};
|
||||
|
||||
|
@ -287,7 +280,6 @@ static const SSL_METHOD TLS_legacy_method_data = {
|
|||
.ssl_pending = ssl3_pending,
|
||||
.ssl_read_bytes = ssl3_read_bytes,
|
||||
.ssl_write_bytes = ssl3_write_bytes,
|
||||
.get_cipher = ssl3_get_cipher,
|
||||
.enc_flags = TLSV1_2_ENC_FLAGS,
|
||||
};
|
||||
|
||||
|
@ -308,7 +300,6 @@ static const SSL_METHOD TLS_client_method_data = {
|
|||
.ssl_pending = tls13_legacy_pending,
|
||||
.ssl_read_bytes = tls13_legacy_read_bytes,
|
||||
.ssl_write_bytes = tls13_legacy_write_bytes,
|
||||
.get_cipher = ssl3_get_cipher,
|
||||
.enc_flags = TLSV1_3_ENC_FLAGS,
|
||||
};
|
||||
|
||||
|
@ -329,7 +320,6 @@ static const SSL_METHOD TLSv1_method_data = {
|
|||
.ssl_pending = ssl3_pending,
|
||||
.ssl_read_bytes = ssl3_read_bytes,
|
||||
.ssl_write_bytes = ssl3_write_bytes,
|
||||
.get_cipher = ssl3_get_cipher,
|
||||
.enc_flags = TLSV1_ENC_FLAGS,
|
||||
};
|
||||
|
||||
|
@ -350,7 +340,6 @@ static const SSL_METHOD TLSv1_client_method_data = {
|
|||
.ssl_pending = ssl3_pending,
|
||||
.ssl_read_bytes = ssl3_read_bytes,
|
||||
.ssl_write_bytes = ssl3_write_bytes,
|
||||
.get_cipher = ssl3_get_cipher,
|
||||
.enc_flags = TLSV1_ENC_FLAGS,
|
||||
};
|
||||
|
||||
|
@ -371,7 +360,6 @@ static const SSL_METHOD TLSv1_1_method_data = {
|
|||
.ssl_pending = ssl3_pending,
|
||||
.ssl_read_bytes = ssl3_read_bytes,
|
||||
.ssl_write_bytes = ssl3_write_bytes,
|
||||
.get_cipher = ssl3_get_cipher,
|
||||
.enc_flags = TLSV1_1_ENC_FLAGS,
|
||||
};
|
||||
|
||||
|
@ -392,7 +380,6 @@ static const SSL_METHOD TLSv1_1_client_method_data = {
|
|||
.ssl_pending = ssl3_pending,
|
||||
.ssl_read_bytes = ssl3_read_bytes,
|
||||
.ssl_write_bytes = ssl3_write_bytes,
|
||||
.get_cipher = ssl3_get_cipher,
|
||||
.enc_flags = TLSV1_1_ENC_FLAGS,
|
||||
};
|
||||
|
||||
|
@ -413,7 +400,6 @@ static const SSL_METHOD TLSv1_2_method_data = {
|
|||
.ssl_pending = ssl3_pending,
|
||||
.ssl_read_bytes = ssl3_read_bytes,
|
||||
.ssl_write_bytes = ssl3_write_bytes,
|
||||
.get_cipher = ssl3_get_cipher,
|
||||
.enc_flags = TLSV1_2_ENC_FLAGS,
|
||||
};
|
||||
|
||||
|
@ -434,7 +420,6 @@ static const SSL_METHOD TLSv1_2_client_method_data = {
|
|||
.ssl_pending = ssl3_pending,
|
||||
.ssl_read_bytes = ssl3_read_bytes,
|
||||
.ssl_write_bytes = ssl3_write_bytes,
|
||||
.get_cipher = ssl3_get_cipher,
|
||||
.enc_flags = TLSV1_2_ENC_FLAGS,
|
||||
};
|
||||
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
/* $OpenBSD: cipherstest.c,v 1.15 2024/07/17 15:22:56 tb Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2015, 2020 Joel Sing <jsing@openbsd.org>
|
||||
*
|
||||
|
@ -24,7 +23,7 @@
|
|||
#include <string.h>
|
||||
|
||||
int ssl3_num_ciphers(void);
|
||||
const SSL_CIPHER *ssl3_get_cipher(unsigned int u);
|
||||
const SSL_CIPHER *ssl3_get_cipher_by_index(int idx);
|
||||
|
||||
int ssl_parse_ciphersuites(STACK_OF(SSL_CIPHER) **out_ciphers, const char *str);
|
||||
|
||||
|
@ -48,12 +47,8 @@ check_cipher_order(void)
|
|||
|
||||
num_ciphers = ssl3_num_ciphers();
|
||||
|
||||
for (i = 1; i <= num_ciphers; i++) {
|
||||
/*
|
||||
* For some reason, ssl3_get_cipher() returns ciphers in
|
||||
* reverse order.
|
||||
*/
|
||||
if ((cipher = ssl3_get_cipher(num_ciphers - i)) == NULL) {
|
||||
for (i = 0; i < num_ciphers; i++) {
|
||||
if ((cipher = ssl3_get_cipher_by_index(i)) == NULL) {
|
||||
fprintf(stderr, "FAIL: ssl3_get_cipher(%d) returned "
|
||||
"NULL\n", i);
|
||||
return 1;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: virtio.c,v 1.25 2024/05/24 10:05:55 jsg Exp $ */
|
||||
/* $OpenBSD: virtio.c,v 1.26 2024/07/23 19:14:05 sf Exp $ */
|
||||
/* $NetBSD: virtio.c,v 1.3 2011/11/02 23:05:52 njoly Exp $ */
|
||||
|
||||
/*
|
||||
|
@ -807,7 +807,7 @@ virtio_dequeue(struct virtio_softc *sc, struct virtqueue *vq,
|
|||
* if you forget to call this the slot will be leaked.
|
||||
*
|
||||
* Don't call this if you use statically allocated slots
|
||||
* and virtio_dequeue_trim().
|
||||
* and virtio_enqueue_trim().
|
||||
*/
|
||||
int
|
||||
virtio_dequeue_commit(struct virtqueue *vq, int slot)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: uaudio.c,v 1.174 2023/12/10 06:32:14 ratchov Exp $ */
|
||||
/* $OpenBSD: uaudio.c,v 1.175 2024/07/23 08:59:21 ratchov Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2018 Alexandre Ratchov <alex@caoua.org>
|
||||
*
|
||||
|
@ -2702,6 +2702,22 @@ uaudio_fixup_params(struct uaudio_softc *sc)
|
|||
}
|
||||
}
|
||||
|
||||
int
|
||||
uaudio_iface_index(struct uaudio_softc *sc, int ifnum)
|
||||
{
|
||||
int i, nifaces;
|
||||
|
||||
nifaces = sc->udev->cdesc->bNumInterfaces;
|
||||
|
||||
for (i = 0; i < nifaces; i++) {
|
||||
if (sc->udev->ifaces[i].idesc->bInterfaceNumber == ifnum)
|
||||
return i;
|
||||
}
|
||||
|
||||
printf("%s: %d: invalid interface number\n", __func__, ifnum);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Parse all descriptors and build configuration of the device.
|
||||
*/
|
||||
|
@ -2711,6 +2727,7 @@ uaudio_process_conf(struct uaudio_softc *sc, struct uaudio_blob *p)
|
|||
struct uaudio_blob dp;
|
||||
struct uaudio_alt *a;
|
||||
unsigned int type, ifnum, altnum, nep, class, subclass;
|
||||
int i;
|
||||
|
||||
while (p->rptr != p->wptr) {
|
||||
if (!uaudio_getdesc(p, &dp))
|
||||
|
@ -2736,7 +2753,8 @@ uaudio_process_conf(struct uaudio_softc *sc, struct uaudio_blob *p)
|
|||
|
||||
switch (subclass) {
|
||||
case UISUBCLASS_AUDIOCONTROL:
|
||||
if (usbd_iface_claimed(sc->udev, ifnum)) {
|
||||
i = uaudio_iface_index(sc, ifnum);
|
||||
if (i != -1 && usbd_iface_claimed(sc->udev, i)) {
|
||||
DPRINTF("%s: %d: AC already claimed\n", __func__, ifnum);
|
||||
break;
|
||||
}
|
||||
|
@ -2748,7 +2766,8 @@ uaudio_process_conf(struct uaudio_softc *sc, struct uaudio_blob *p)
|
|||
return 0;
|
||||
break;
|
||||
case UISUBCLASS_AUDIOSTREAM:
|
||||
if (usbd_iface_claimed(sc->udev, ifnum)) {
|
||||
i = uaudio_iface_index(sc, ifnum);
|
||||
if (i != -1 && usbd_iface_claimed(sc->udev, i)) {
|
||||
DPRINTF("%s: %d: AS already claimed\n", __func__, ifnum);
|
||||
break;
|
||||
}
|
||||
|
@ -2768,10 +2787,19 @@ done:
|
|||
* Claim all interfaces we use. This prevents other uaudio(4)
|
||||
* devices from trying to use them.
|
||||
*/
|
||||
for (a = sc->alts; a != NULL; a = a->next)
|
||||
usbd_claim_iface(sc->udev, a->ifnum);
|
||||
for (a = sc->alts; a != NULL; a = a->next) {
|
||||
i = uaudio_iface_index(sc, a->ifnum);
|
||||
if (i != -1) {
|
||||
DPRINTF("%s: claim: %d at %d\n", __func__, a->ifnum, i);
|
||||
usbd_claim_iface(sc->udev, i);
|
||||
}
|
||||
}
|
||||
|
||||
usbd_claim_iface(sc->udev, sc->ctl_ifnum);
|
||||
i = uaudio_iface_index(sc, sc->ctl_ifnum);
|
||||
if (i != -1) {
|
||||
DPRINTF("%s: claim: ac %d at %d\n", __func__, sc->ctl_ifnum, i);
|
||||
usbd_claim_iface(sc->udev, i);
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: kern_exit.c,v 1.225 2024/07/22 08:18:53 claudio Exp $ */
|
||||
/* $OpenBSD: kern_exit.c,v 1.227 2024/07/24 15:30:17 claudio Exp $ */
|
||||
/* $NetBSD: kern_exit.c,v 1.39 1996/04/22 01:38:25 christos Exp $ */
|
||||
|
||||
/*
|
||||
|
@ -458,8 +458,6 @@ reaper(void *arg)
|
|||
|
||||
WITNESS_THREAD_EXIT(p);
|
||||
|
||||
KERNEL_LOCK();
|
||||
|
||||
/*
|
||||
* Free the VM resources we're still holding on to.
|
||||
* We must do this from a valid thread because doing
|
||||
|
@ -470,13 +468,16 @@ reaper(void *arg)
|
|||
|
||||
if (p->p_flag & P_THREAD) {
|
||||
/* Just a thread */
|
||||
KERNEL_LOCK();
|
||||
proc_free(p);
|
||||
KERNEL_UNLOCK();
|
||||
} else {
|
||||
struct process *pr = p->p_p;
|
||||
|
||||
/* Release the rest of the process's vmspace */
|
||||
uvm_exit(pr);
|
||||
|
||||
KERNEL_LOCK();
|
||||
if ((pr->ps_flags & PS_NOZOMBIE) == 0) {
|
||||
/* Process is now a true zombie. */
|
||||
atomic_setbits_int(&pr->ps_flags, PS_ZOMBIE);
|
||||
|
@ -493,11 +494,10 @@ reaper(void *arg)
|
|||
/* No one will wait for us, just zap it. */
|
||||
process_zap(pr);
|
||||
}
|
||||
}
|
||||
|
||||
KERNEL_UNLOCK();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
dowait6(struct proc *q, idtype_t idtype, id_t id, int *statusp, int options,
|
||||
|
@ -550,10 +550,9 @@ loop:
|
|||
return (0);
|
||||
}
|
||||
if ((options & WTRAPPED) &&
|
||||
pr->ps_flags & PS_TRACED &&
|
||||
(pr->ps_flags & PS_TRACED) &&
|
||||
(pr->ps_flags & PS_WAITED) == 0 && pr->ps_single &&
|
||||
pr->ps_single->p_stat == SSTOP &&
|
||||
(pr->ps_single->p_flag & P_SUSPSINGLE) == 0) {
|
||||
pr->ps_single->p_stat == SSTOP) {
|
||||
if (single_thread_wait(pr, 0))
|
||||
goto loop;
|
||||
|
||||
|
@ -578,8 +577,8 @@ loop:
|
|||
if (p->p_stat == SSTOP &&
|
||||
(pr->ps_flags & PS_WAITED) == 0 &&
|
||||
(p->p_flag & P_SUSPSINGLE) == 0 &&
|
||||
(pr->ps_flags & PS_TRACED ||
|
||||
options & WUNTRACED)) {
|
||||
((pr->ps_flags & PS_TRACED) ||
|
||||
(options & WUNTRACED))) {
|
||||
if ((options & WNOWAIT) == 0)
|
||||
atomic_setbits_int(&pr->ps_flags, PS_WAITED);
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: kern_sig.c,v 1.333 2024/07/22 09:43:47 claudio Exp $ */
|
||||
/* $OpenBSD: kern_sig.c,v 1.334 2024/07/24 15:31:08 claudio Exp $ */
|
||||
/* $NetBSD: kern_sig.c,v 1.54 1996/04/22 01:38:32 christos Exp $ */
|
||||
|
||||
/*
|
||||
|
@ -2164,6 +2164,7 @@ single_thread_set(struct proc *p, int flags)
|
|||
panic("single_thread_mode = %d", mode);
|
||||
#endif
|
||||
}
|
||||
KASSERT((p->p_flag & P_SUSPSINGLE) == 0);
|
||||
pr->ps_single = p;
|
||||
pr->ps_singlecnt = pr->ps_threadcnt;
|
||||
|
||||
|
@ -2233,6 +2234,7 @@ single_thread_wait(struct process *pr, int recheck)
|
|||
if (!recheck)
|
||||
break;
|
||||
}
|
||||
KASSERT((pr->ps_single->p_flag & P_SUSPSINGLE) == 0);
|
||||
mtx_leave(&pr->ps_mtx);
|
||||
|
||||
return wait;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: kern_synch.c,v 1.205 2024/06/03 12:48:25 claudio Exp $ */
|
||||
/* $OpenBSD: kern_synch.c,v 1.206 2024/07/23 08:38:02 claudio Exp $ */
|
||||
/* $NetBSD: kern_synch.c,v 1.37 1996/04/22 01:38:37 christos Exp $ */
|
||||
|
||||
/*
|
||||
|
@ -62,7 +62,7 @@
|
|||
#include <sys/ktrace.h>
|
||||
#endif
|
||||
|
||||
int sleep_signal_check(void);
|
||||
int sleep_signal_check(struct proc *);
|
||||
int thrsleep(struct proc *, struct sys___thrsleep_args *);
|
||||
int thrsleep_unlock(void *);
|
||||
|
||||
|
@ -385,7 +385,7 @@ sleep_finish(int timo, int do_sleep)
|
|||
* we must be ready for sleep when sleep_signal_check() is
|
||||
* called.
|
||||
*/
|
||||
if ((error = sleep_signal_check()) != 0) {
|
||||
if ((error = sleep_signal_check(p)) != 0) {
|
||||
catch = 0;
|
||||
do_sleep = 0;
|
||||
}
|
||||
|
@ -438,7 +438,7 @@ sleep_finish(int timo, int do_sleep)
|
|||
|
||||
/* Check if thread was woken up because of a unwind or signal */
|
||||
if (catch != 0)
|
||||
error = sleep_signal_check();
|
||||
error = sleep_signal_check(p);
|
||||
|
||||
/* Signal errors are higher priority than timeouts. */
|
||||
if (error == 0 && error1 != 0)
|
||||
|
@ -451,9 +451,8 @@ sleep_finish(int timo, int do_sleep)
|
|||
* Check and handle signals and suspensions around a sleep cycle.
|
||||
*/
|
||||
int
|
||||
sleep_signal_check(void)
|
||||
sleep_signal_check(struct proc *p)
|
||||
{
|
||||
struct proc *p = curproc;
|
||||
struct sigctx ctx;
|
||||
int err, sig;
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: subr_log.c,v 1.78 2023/09/22 20:03:05 mvs Exp $ */
|
||||
/* $OpenBSD: subr_log.c,v 1.79 2024/07/24 13:37:05 claudio Exp $ */
|
||||
/* $NetBSD: subr_log.c,v 1.11 1996/03/30 22:24:44 christos Exp $ */
|
||||
|
||||
/*
|
||||
|
@ -73,10 +73,11 @@
|
|||
/*
|
||||
* Locking:
|
||||
* L log_mtx
|
||||
* Q log_kq_mtx
|
||||
*/
|
||||
struct logsoftc {
|
||||
int sc_state; /* [L] see above for possibilities */
|
||||
struct klist sc_klist; /* process waiting on kevent call */
|
||||
struct klist sc_klist; /* [Q] process waiting on kevent call */
|
||||
struct sigio_ref sc_sigio; /* async I/O registration */
|
||||
int sc_need_wakeup; /* if set, wake up waiters */
|
||||
struct timeout sc_tick; /* wakeup poll timeout */
|
||||
|
@ -97,6 +98,8 @@ struct rwlock syslogf_rwlock = RWLOCK_INITIALIZER("syslogf");
|
|||
*/
|
||||
struct mutex log_mtx =
|
||||
MUTEX_INITIALIZER_FLAGS(IPL_HIGH, "logmtx", MTX_NOWITNESS);
|
||||
struct mutex log_kq_mtx =
|
||||
MUTEX_INITIALIZER_FLAGS(IPL_HIGH, "logkqmtx", MTX_NOWITNESS);
|
||||
|
||||
void filt_logrdetach(struct knote *kn);
|
||||
int filt_logread(struct knote *kn, long hint);
|
||||
|
@ -208,7 +211,7 @@ logopen(dev_t dev, int flags, int mode, struct proc *p)
|
|||
if (log_open)
|
||||
return (EBUSY);
|
||||
log_open = 1;
|
||||
klist_init_mutex(&logsoftc.sc_klist, &log_mtx);
|
||||
klist_init_mutex(&logsoftc.sc_klist, &log_kq_mtx);
|
||||
sigio_init(&logsoftc.sc_sigio);
|
||||
timeout_set(&logsoftc.sc_tick, logtick, NULL);
|
||||
timeout_add_msec(&logsoftc.sc_tick, LOG_TICK);
|
||||
|
@ -336,7 +339,9 @@ filt_logread(struct knote *kn, long hint)
|
|||
{
|
||||
struct msgbuf *mbp = kn->kn_hook;
|
||||
|
||||
mtx_enter(&log_mtx);
|
||||
kn->kn_data = msgbuf_getlen(mbp);
|
||||
mtx_leave(&log_mtx);
|
||||
return (kn->kn_data != 0);
|
||||
}
|
||||
|
||||
|
@ -345,9 +350,9 @@ filt_logmodify(struct kevent *kev, struct knote *kn)
|
|||
{
|
||||
int active;
|
||||
|
||||
mtx_enter(&log_mtx);
|
||||
mtx_enter(&log_kq_mtx);
|
||||
active = knote_modify(kev, kn);
|
||||
mtx_leave(&log_mtx);
|
||||
mtx_leave(&log_kq_mtx);
|
||||
|
||||
return (active);
|
||||
}
|
||||
|
@ -357,9 +362,9 @@ filt_logprocess(struct knote *kn, struct kevent *kev)
|
|||
{
|
||||
int active;
|
||||
|
||||
mtx_enter(&log_mtx);
|
||||
mtx_enter(&log_kq_mtx);
|
||||
active = knote_process(kn, kev);
|
||||
mtx_leave(&log_mtx);
|
||||
mtx_leave(&log_kq_mtx);
|
||||
|
||||
return (active);
|
||||
}
|
||||
|
@ -404,9 +409,10 @@ logtick(void *arg)
|
|||
state = logsoftc.sc_state;
|
||||
if (logsoftc.sc_state & LOG_RDWAIT)
|
||||
logsoftc.sc_state &= ~LOG_RDWAIT;
|
||||
knote_locked(&logsoftc.sc_klist, 0);
|
||||
mtx_leave(&log_mtx);
|
||||
|
||||
knote(&logsoftc.sc_klist, 0);
|
||||
|
||||
if (state & LOG_ASYNC)
|
||||
pgsigio(&logsoftc.sc_sigio, SIGIO, 0);
|
||||
if (state & LOG_RDWAIT)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: pfkeyv2_parsemessage.c,v 1.62 2023/09/29 18:45:42 tobhe Exp $ */
|
||||
/* $OpenBSD: pfkeyv2_parsemessage.c,v 1.63 2024/07/23 20:04:51 tobhe Exp $ */
|
||||
|
||||
/*
|
||||
* @(#)COPYRIGHT 1.1 (NRL) 17 January 1995
|
||||
|
@ -144,9 +144,9 @@ uint64_t sadb_exts_allowed_in[SADB_MAX+1] =
|
|||
/* GETSPI */
|
||||
BITMAP_ADDRESS_SRC | BITMAP_ADDRESS_DST | BITMAP_SPIRANGE,
|
||||
/* UPDATE */
|
||||
BITMAP_SA | BITMAP_LIFETIME | BITMAP_ADDRESS | BITMAP_ADDRESS_PROXY | BITMAP_KEY | BITMAP_IDENTITY | BITMAP_X_FLOW | BITMAP_X_UDPENCAP | BITMAP_X_TAG | BITMAP_X_TAP | BITMAP_X_RDOMAIN | BITMAP_X_IFACE,
|
||||
BITMAP_SA | BITMAP_LIFETIME | BITMAP_ADDRESS | BITMAP_ADDRESS_PROXY | BITMAP_KEY | BITMAP_IDENTITY | BITMAP_X_FLOW | BITMAP_X_UDPENCAP | BITMAP_X_TAG | BITMAP_X_TAP | BITMAP_X_RDOMAIN | BITMAP_X_COUNTER | BITMAP_X_REPLAY | BITMAP_X_IFACE,
|
||||
/* ADD */
|
||||
BITMAP_SA | BITMAP_LIFETIME | BITMAP_ADDRESS | BITMAP_KEY | BITMAP_IDENTITY | BITMAP_X_FLOW | BITMAP_X_UDPENCAP | BITMAP_X_LIFETIME_LASTUSE | BITMAP_X_TAG | BITMAP_X_TAP | BITMAP_X_RDOMAIN | BITMAP_X_IFACE,
|
||||
BITMAP_SA | BITMAP_LIFETIME | BITMAP_ADDRESS | BITMAP_KEY | BITMAP_IDENTITY | BITMAP_X_FLOW | BITMAP_X_UDPENCAP | BITMAP_X_LIFETIME_LASTUSE | BITMAP_X_TAG | BITMAP_X_TAP | BITMAP_X_RDOMAIN | BITMAP_X_COUNTER | BITMAP_X_REPLAY | BITMAP_X_IFACE,
|
||||
/* DELETE */
|
||||
BITMAP_SA | BITMAP_ADDRESS_SRC | BITMAP_ADDRESS_DST | BITMAP_X_RDOMAIN,
|
||||
/* GET */
|
||||
|
@ -851,6 +851,19 @@ pfkeyv2_parsemessage(void *p, int len, void **headers)
|
|||
return (EINVAL);
|
||||
}
|
||||
break;
|
||||
case SADB_X_EXT_REPLAY:
|
||||
if (i != sizeof(struct sadb_x_replay)) {
|
||||
DPRINTF("bad REPLAY header length");
|
||||
return (EINVAL);
|
||||
}
|
||||
break;
|
||||
case SADB_X_EXT_COUNTER:
|
||||
if (i != sizeof(struct sadb_x_counter)) {
|
||||
DPRINTF("bad COUNTER header length");
|
||||
return (EINVAL);
|
||||
}
|
||||
break;
|
||||
|
||||
#if NPF > 0
|
||||
case SADB_X_EXT_TAG:
|
||||
if (i < sizeof(struct sadb_x_tag)) {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: uvm_device.c,v 1.66 2021/12/15 12:53:53 mpi Exp $ */
|
||||
/* $OpenBSD: uvm_device.c,v 1.67 2024/07/24 12:15:55 mpi Exp $ */
|
||||
/* $NetBSD: uvm_device.c,v 1.30 2000/11/25 06:27:59 chs Exp $ */
|
||||
|
||||
/*
|
||||
|
@ -245,8 +245,6 @@ udv_detach(struct uvm_object *uobj)
|
|||
{
|
||||
struct uvm_device *udv = (struct uvm_device *)uobj;
|
||||
|
||||
KERNEL_ASSERT_LOCKED();
|
||||
|
||||
/*
|
||||
* loop until done
|
||||
*/
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: uvm_extern.h,v 1.174 2024/04/02 08:39:17 deraadt Exp $ */
|
||||
/* $OpenBSD: uvm_extern.h,v 1.175 2024/07/24 12:17:31 mpi Exp $ */
|
||||
/* $NetBSD: uvm_extern.h,v 1.57 2001/03/09 01:02:12 chs Exp $ */
|
||||
|
||||
/*
|
||||
|
@ -195,11 +195,12 @@ struct pmap;
|
|||
* Locks used to protect struct members in this file:
|
||||
* K kernel lock
|
||||
* I immutable after creation
|
||||
* a atomic operations
|
||||
* v vm_map's lock
|
||||
*/
|
||||
struct vmspace {
|
||||
struct vm_map vm_map; /* VM address map */
|
||||
int vm_refcnt; /* [K] number of references */
|
||||
int vm_refcnt; /* [a] number of references */
|
||||
caddr_t vm_shm; /* SYS5 shared memory private data XXX */
|
||||
/* we copy from vm_startcopy to the end of the structure on fork */
|
||||
#define vm_startcopy vm_rssize
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: uvm_map.c,v 1.329 2024/06/02 15:31:57 deraadt Exp $ */
|
||||
/* $OpenBSD: uvm_map.c,v 1.330 2024/07/24 12:17:31 mpi Exp $ */
|
||||
/* $NetBSD: uvm_map.c,v 1.86 2000/11/27 08:40:03 chs Exp $ */
|
||||
|
||||
/*
|
||||
|
@ -1346,7 +1346,6 @@ void
|
|||
uvm_unmap_detach(struct uvm_map_deadq *deadq, int flags)
|
||||
{
|
||||
struct vm_map_entry *entry, *tmp;
|
||||
int waitok = flags & UVM_PLA_WAITOK;
|
||||
|
||||
TAILQ_FOREACH_SAFE(entry, deadq, dfree.deadq, tmp) {
|
||||
/* Drop reference to amap, if we've got one. */
|
||||
|
@ -1356,21 +1355,6 @@ uvm_unmap_detach(struct uvm_map_deadq *deadq, int flags)
|
|||
atop(entry->end - entry->start),
|
||||
flags & AMAP_REFALL);
|
||||
|
||||
/* Skip entries for which we have to grab the kernel lock. */
|
||||
if (UVM_ET_ISSUBMAP(entry) || UVM_ET_ISOBJ(entry))
|
||||
continue;
|
||||
|
||||
TAILQ_REMOVE(deadq, entry, dfree.deadq);
|
||||
uvm_mapent_free(entry);
|
||||
}
|
||||
|
||||
if (TAILQ_EMPTY(deadq))
|
||||
return;
|
||||
|
||||
KERNEL_LOCK();
|
||||
while ((entry = TAILQ_FIRST(deadq)) != NULL) {
|
||||
if (waitok)
|
||||
uvm_pause();
|
||||
/* Drop reference to our backing object, if we've got one. */
|
||||
if (UVM_ET_ISSUBMAP(entry)) {
|
||||
/* ... unlikely to happen, but play it safe */
|
||||
|
@ -1381,11 +1365,9 @@ uvm_unmap_detach(struct uvm_map_deadq *deadq, int flags)
|
|||
entry->object.uvm_obj);
|
||||
}
|
||||
|
||||
/* Step to next. */
|
||||
TAILQ_REMOVE(deadq, entry, dfree.deadq);
|
||||
uvm_mapent_free(entry);
|
||||
}
|
||||
KERNEL_UNLOCK();
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -2476,10 +2458,6 @@ uvm_map_teardown(struct vm_map *map)
|
|||
#endif
|
||||
int i;
|
||||
|
||||
KERNEL_ASSERT_LOCKED();
|
||||
KERNEL_UNLOCK();
|
||||
KERNEL_ASSERT_UNLOCKED();
|
||||
|
||||
KASSERT((map->flags & VM_MAP_INTRSAFE) == 0);
|
||||
|
||||
vm_map_lock(map);
|
||||
|
@ -2535,9 +2513,7 @@ uvm_map_teardown(struct vm_map *map)
|
|||
numq++;
|
||||
KASSERT(numt == numq);
|
||||
#endif
|
||||
uvm_unmap_detach(&dead_entries, UVM_PLA_WAITOK);
|
||||
|
||||
KERNEL_LOCK();
|
||||
uvm_unmap_detach(&dead_entries, 0);
|
||||
|
||||
pmap_destroy(map->pmap);
|
||||
map->pmap = NULL;
|
||||
|
@ -3417,10 +3393,8 @@ uvmspace_exec(struct proc *p, vaddr_t start, vaddr_t end)
|
|||
void
|
||||
uvmspace_addref(struct vmspace *vm)
|
||||
{
|
||||
KERNEL_ASSERT_LOCKED();
|
||||
KASSERT(vm->vm_refcnt > 0);
|
||||
|
||||
vm->vm_refcnt++;
|
||||
atomic_inc_int(&vm->vm_refcnt);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -3429,9 +3403,7 @@ uvmspace_addref(struct vmspace *vm)
|
|||
void
|
||||
uvmspace_free(struct vmspace *vm)
|
||||
{
|
||||
KERNEL_ASSERT_LOCKED();
|
||||
|
||||
if (--vm->vm_refcnt == 0) {
|
||||
if (atomic_dec_int_nv(&vm->vm_refcnt) == 0) {
|
||||
/*
|
||||
* lock the map, to wait out all other references to it. delete
|
||||
* all of the mappings and pages they hold, then call the pmap
|
||||
|
@ -3439,8 +3411,11 @@ uvmspace_free(struct vmspace *vm)
|
|||
*/
|
||||
#ifdef SYSVSHM
|
||||
/* Get rid of any SYSV shared memory segments. */
|
||||
if (vm->vm_shm != NULL)
|
||||
if (vm->vm_shm != NULL) {
|
||||
KERNEL_LOCK();
|
||||
shmexit(vm);
|
||||
KERNEL_UNLOCK();
|
||||
}
|
||||
#endif
|
||||
|
||||
uvm_map_teardown(&vm->vm_map);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: uvm_pager.c,v 1.91 2023/08/11 17:53:22 mpi Exp $ */
|
||||
/* $OpenBSD: uvm_pager.c,v 1.92 2024/07/24 12:18:10 mpi Exp $ */
|
||||
/* $NetBSD: uvm_pager.c,v 1.36 2000/11/27 18:26:41 chs Exp $ */
|
||||
|
||||
/*
|
||||
|
@ -134,24 +134,6 @@ uvm_pseg_get(int flags)
|
|||
int i;
|
||||
struct uvm_pseg *pseg;
|
||||
|
||||
/*
|
||||
* XXX Prevent lock ordering issue in uvm_unmap_detach(). A real
|
||||
* fix would be to move the KERNEL_LOCK() out of uvm_unmap_detach().
|
||||
*
|
||||
* witness_checkorder() at witness_checkorder+0xba0
|
||||
* __mp_lock() at __mp_lock+0x5f
|
||||
* uvm_unmap_detach() at uvm_unmap_detach+0xc5
|
||||
* uvm_map() at uvm_map+0x857
|
||||
* uvm_km_valloc_try() at uvm_km_valloc_try+0x65
|
||||
* uvm_pseg_get() at uvm_pseg_get+0x6f
|
||||
* uvm_pagermapin() at uvm_pagermapin+0x45
|
||||
* uvn_io() at uvn_io+0xcf
|
||||
* uvn_get() at uvn_get+0x156
|
||||
* uvm_fault_lower() at uvm_fault_lower+0x28a
|
||||
* uvm_fault() at uvm_fault+0x1b3
|
||||
* upageflttrap() at upageflttrap+0x62
|
||||
*/
|
||||
KERNEL_LOCK();
|
||||
mtx_enter(&uvm_pseg_lck);
|
||||
|
||||
pager_seg_restart:
|
||||
|
@ -178,7 +160,6 @@ pager_seg_restart:
|
|||
if (!UVM_PSEG_INUSE(pseg, i)) {
|
||||
pseg->use |= 1 << i;
|
||||
mtx_leave(&uvm_pseg_lck);
|
||||
KERNEL_UNLOCK();
|
||||
return pseg->start + i * MAXBSIZE;
|
||||
}
|
||||
}
|
||||
|
@ -191,7 +172,6 @@ pager_seg_fail:
|
|||
}
|
||||
|
||||
mtx_leave(&uvm_pseg_lck);
|
||||
KERNEL_UNLOCK();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: uvm_vnode.c,v 1.132 2023/04/10 04:21:20 jsg Exp $ */
|
||||
/* $OpenBSD: uvm_vnode.c,v 1.133 2024/07/24 12:16:21 mpi Exp $ */
|
||||
/* $NetBSD: uvm_vnode.c,v 1.36 2000/11/24 20:34:01 chs Exp $ */
|
||||
|
||||
/*
|
||||
|
@ -306,10 +306,12 @@ uvn_detach(struct uvm_object *uobj)
|
|||
struct vnode *vp;
|
||||
int oldflags;
|
||||
|
||||
KERNEL_LOCK();
|
||||
rw_enter(uobj->vmobjlock, RW_WRITE);
|
||||
uobj->uo_refs--; /* drop ref! */
|
||||
if (uobj->uo_refs) { /* still more refs */
|
||||
rw_exit(uobj->vmobjlock);
|
||||
KERNEL_UNLOCK();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -365,6 +367,7 @@ uvn_detach(struct uvm_object *uobj)
|
|||
|
||||
if ((uvn->u_flags & UVM_VNODE_RELKILL) == 0) {
|
||||
rw_exit(uobj->vmobjlock);
|
||||
KERNEL_UNLOCK();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -387,8 +390,7 @@ out:
|
|||
|
||||
/* drop our reference to the vnode. */
|
||||
vrele(vp);
|
||||
|
||||
return;
|
||||
KERNEL_UNLOCK();
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: file.c,v 1.26 2022/12/26 19:16:03 jmc Exp $ */
|
||||
/* $OpenBSD: file.c,v 1.27 2024/07/23 06:34:03 ratchov Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2008-2012 Alexandre Ratchov <alex@caoua.org>
|
||||
*
|
||||
|
@ -63,7 +63,7 @@
|
|||
void timo_update(unsigned int);
|
||||
void timo_init(void);
|
||||
void timo_done(void);
|
||||
void file_process(struct file *, struct pollfd *);
|
||||
int file_process(struct file *, struct pollfd *);
|
||||
|
||||
struct timespec file_ts;
|
||||
struct file *file_list;
|
||||
|
@ -270,10 +270,10 @@ file_del(struct file *f)
|
|||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
int
|
||||
file_process(struct file *f, struct pollfd *pfd)
|
||||
{
|
||||
int revents;
|
||||
int rc, revents;
|
||||
#ifdef DEBUG
|
||||
struct timespec ts0, ts1;
|
||||
long us;
|
||||
|
@ -283,14 +283,21 @@ file_process(struct file *f, struct pollfd *pfd)
|
|||
if (log_level >= 3)
|
||||
clock_gettime(CLOCK_UPTIME, &ts0);
|
||||
#endif
|
||||
rc = 0;
|
||||
revents = (f->state != FILE_ZOMB) ?
|
||||
f->ops->revents(f->arg, pfd) : 0;
|
||||
if ((revents & POLLHUP) && (f->state != FILE_ZOMB))
|
||||
if ((revents & POLLHUP) && (f->state != FILE_ZOMB)) {
|
||||
f->ops->hup(f->arg);
|
||||
if ((revents & POLLIN) && (f->state != FILE_ZOMB))
|
||||
rc = 1;
|
||||
}
|
||||
if ((revents & POLLIN) && (f->state != FILE_ZOMB)) {
|
||||
f->ops->in(f->arg);
|
||||
if ((revents & POLLOUT) && (f->state != FILE_ZOMB))
|
||||
rc = 1;
|
||||
}
|
||||
if ((revents & POLLOUT) && (f->state != FILE_ZOMB)) {
|
||||
f->ops->out(f->arg);
|
||||
rc = 1;
|
||||
}
|
||||
#ifdef DEBUG
|
||||
if (log_level >= 3) {
|
||||
clock_gettime(CLOCK_UPTIME, &ts1);
|
||||
|
@ -304,6 +311,7 @@ file_process(struct file *f, struct pollfd *pfd)
|
|||
}
|
||||
}
|
||||
#endif
|
||||
return rc;
|
||||
}
|
||||
|
||||
int
|
||||
|
@ -370,11 +378,19 @@ file_poll(void)
|
|||
/*
|
||||
* process files that do not rely on poll
|
||||
*/
|
||||
res = 0;
|
||||
for (f = file_list; f != NULL; f = f->next) {
|
||||
if (f->nfds > 0)
|
||||
continue;
|
||||
file_process(f, NULL);
|
||||
res |= file_process(f, NULL);
|
||||
}
|
||||
/*
|
||||
* The processing may have changed the poll(2) conditions of
|
||||
* other files, so restart the loop to force their poll(2) event
|
||||
* masks to be reevaluated.
|
||||
*/
|
||||
if (res)
|
||||
return 1;
|
||||
|
||||
/*
|
||||
* Sleep. Calculate the number of milliseconds poll(2) must
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: parser.c,v 1.3 2024/07/09 17:26:14 yasuoka Exp $ */
|
||||
/* $OpenBSD: parser.c,v 1.4 2024/07/24 08:27:20 yasuoka Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2010 Reyk Floeter <reyk@vantronix.net>
|
||||
|
@ -44,6 +44,7 @@ enum token_type {
|
|||
MAXWAIT,
|
||||
FLAGS,
|
||||
SESSION_SEQ,
|
||||
MSGAUTH,
|
||||
ENDTOKEN
|
||||
};
|
||||
|
||||
|
@ -58,6 +59,7 @@ static struct parse_result res = {
|
|||
.tries = TEST_TRIES_DEFAULT,
|
||||
.interval = { TEST_INTERVAL_DEFAULT, 0 },
|
||||
.maxwait = { TEST_MAXWAIT_DEFAULT, 0 },
|
||||
.msgauth = 1
|
||||
};
|
||||
|
||||
static const struct token t_test[];
|
||||
|
@ -71,6 +73,7 @@ static const struct token t_nas_port[];
|
|||
static const struct token t_tries[];
|
||||
static const struct token t_interval[];
|
||||
static const struct token t_maxwait[];
|
||||
static const struct token t_yesno[];
|
||||
static const struct token t_ipcp[];
|
||||
static const struct token t_ipcp_flags[];
|
||||
static const struct token t_ipcp_session_seq[];
|
||||
|
@ -105,6 +108,7 @@ static const struct token t_test_opts[] = {
|
|||
{ KEYWORD, "interval", NONE, t_interval },
|
||||
{ KEYWORD, "tries", NONE, t_tries },
|
||||
{ KEYWORD, "maxwait", NONE, t_maxwait },
|
||||
{ KEYWORD, "msgauth", NONE, t_yesno },
|
||||
{ ENDTOKEN, "", NONE, NULL }
|
||||
};
|
||||
|
||||
|
@ -143,6 +147,12 @@ static const struct token t_maxwait[] = {
|
|||
{ ENDTOKEN, "", NONE, NULL }
|
||||
};
|
||||
|
||||
static const struct token t_yesno[] = {
|
||||
{ MSGAUTH, "yes", 1, t_test_opts },
|
||||
{ MSGAUTH, "no", 0, t_test_opts },
|
||||
{ ENDTOKEN, "", NONE, NULL }
|
||||
};
|
||||
|
||||
static const struct token t_ipcp[] = {
|
||||
{ KEYWORD, "show", IPCP_SHOW, NULL },
|
||||
{ KEYWORD, "dump", IPCP_DUMP, t_ipcp_flags },
|
||||
|
@ -365,6 +375,14 @@ match_token(char *word, const struct token table[])
|
|||
printf("invalid argument: %s is %s for "
|
||||
"\"session-id\"", word, errstr);
|
||||
t = &table[i];
|
||||
case MSGAUTH:
|
||||
if (word != NULL &&
|
||||
strcmp(word, table[i].keyword) == 0) {
|
||||
match++;
|
||||
res.msgauth = table[i].value;
|
||||
t = &table[i];
|
||||
}
|
||||
break;
|
||||
case ENDTOKEN:
|
||||
break;
|
||||
}
|
||||
|
@ -436,6 +454,9 @@ show_valid_args(const struct token table[])
|
|||
case SESSION_SEQ:
|
||||
fprintf(stderr, " <sequence number>\n");
|
||||
break;
|
||||
case MSGAUTH:
|
||||
fprintf(stderr, " %s\n", table[i].keyword);
|
||||
break;
|
||||
case ENDTOKEN:
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: parser.h,v 1.3 2024/07/09 17:26:14 yasuoka Exp $ */
|
||||
/* $OpenBSD: parser.h,v 1.4 2024/07/24 08:27:20 yasuoka Exp $ */
|
||||
|
||||
/* This file is derived from OpenBSD:src/usr.sbin/ikectl/parser.h 1.9 */
|
||||
/*
|
||||
|
@ -60,6 +60,7 @@ struct parse_result {
|
|||
const char *password;
|
||||
u_short port;
|
||||
int nas_port;
|
||||
int msgauth;
|
||||
enum auth_method auth_method;
|
||||
|
||||
/* number of packets to try sending */
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
.\" $OpenBSD: radiusctl.8,v 1.8 2024/07/14 03:47:44 jsg Exp $
|
||||
.\" $OpenBSD: radiusctl.8,v 1.9 2024/07/24 08:27:20 yasuoka Exp $
|
||||
.\"
|
||||
.\" Copyright (c) YASUOKA Masahiko <yasuoka@yasuoka.net>
|
||||
.\"
|
||||
|
@ -15,7 +15,7 @@
|
|||
.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
.\"
|
||||
.\"
|
||||
.Dd $Mdocdate: July 14 2024 $
|
||||
.Dd $Mdocdate: July 24 2024 $
|
||||
.Dt RADIUSCTL 8
|
||||
.Os
|
||||
.Sh NAME
|
||||
|
@ -86,6 +86,9 @@ the default port number 1812 is used.
|
|||
.It Cm tries Ar number
|
||||
Specifies the number of packets to try sending.
|
||||
The default is 3.
|
||||
.It Cm msgauth Ar yes | no
|
||||
Specifies if Message-Authenticator is given for the access request packet.
|
||||
The default is yes.
|
||||
.El
|
||||
.It Cm ipcp show
|
||||
Show all ipcp sessions in the database of
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: radiusctl.c,v 1.11 2024/07/22 09:39:23 yasuoka Exp $ */
|
||||
/* $OpenBSD: radiusctl.c,v 1.12 2024/07/24 08:27:20 yasuoka Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2015 YASUOKA Masahiko <yasuoka@yasuoka.net>
|
||||
*
|
||||
|
@ -368,6 +368,7 @@ radius_test(struct parse_result *res)
|
|||
u32val = htonl(res->nas_port);
|
||||
radius_put_raw_attr(reqpkt, RADIUS_TYPE_NAS_PORT, &u32val, 4);
|
||||
|
||||
if (res->msgauth)
|
||||
radius_put_message_authenticator(reqpkt, res->secret);
|
||||
|
||||
event_init();
|
||||
|
@ -500,6 +501,10 @@ radius_dump(FILE *out, RADIUS_PACKET *pkt, bool resp, const char *secret)
|
|||
: (radius_check_message_authenticator(pkt, secret) == 0)
|
||||
? "Verified" : "NG");
|
||||
}
|
||||
if (!resp)
|
||||
fprintf(out, " Message-Authenticator = %s\n",
|
||||
(radius_has_attr(pkt, RADIUS_TYPE_MESSAGE_AUTHENTICATOR))
|
||||
? "(Present)" : "(Not present)");
|
||||
|
||||
if (radius_get_string_attr(pkt, RADIUS_TYPE_USER_NAME, buf,
|
||||
sizeof(buf)) == 0)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue