diff options
author | Rick Macklem <rmacklem@FreeBSD.org> | 2022-05-14 12:56:50 -0700 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2022-07-07 14:22:54 +0200 |
commit | 5f0e04113f2c62b638698f52b37655b9f9357ddd (patch) | |
tree | 2ed96b339830dc02a88b3ee8d08a24c75fa5f9a2 | |
parent | Widen ifnet_detach_sxlock coverage (diff) | |
download | rtems-libbsd-5f0e04113f2c62b638698f52b37655b9f9357ddd.tar.bz2 |
uipc_socket.c: Modify MSG_TLSAPPDATA to only do Alert Records
Without this patch, the MSG_TLSAPPDATA flag would cause
soreceive_generic() to return ENXIO for any non-application
data record in a TLS receive stream.
This works ok for TLS1.2, since Alert records appear to be
the only non-application data records received.
However, for TLS1.3, there can be post-handshake handshake
records, such as NewSessionKey sent to the client from the
server. These handshake records cannot be handled by the
upcall which does an SSL_read() with length == 0.
It appears that the client can simply throw away these
NewSessionKey records, but to do so, it needs to receive
them within the kernel.
This patch modifies the semantics of MSG_TLSAPPDATA slightly,
so that it only applies to Alert records and not Handshake
records. It is needed to allow the krpc to work with KTLS1.3.
Reviewed by: hselasky
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D35170
-rw-r--r-- | rtemsbsd/include/machine/_kernel_socket.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/rtemsbsd/include/machine/_kernel_socket.h b/rtemsbsd/include/machine/_kernel_socket.h index dba4694f..3acee460 100644 --- a/rtemsbsd/include/machine/_kernel_socket.h +++ b/rtemsbsd/include/machine/_kernel_socket.h @@ -46,7 +46,7 @@ #define MSG_SOCALLBCK 0x00010000 /* for use by socket callbacks - soreceive (TCP) */ #define MSG_MORETOCOME 0x00100000 /* additional data pending */ -#define MSG_TLSAPPDATA 0x00200000 /* only soreceive() app. data (TLS) */ +#define MSG_TLSAPPDATA 0x00200000 /* do not soreceive() alert rec. (TLS) */ #define CMSG_ALIGN(n) _ALIGN(n) |