From 01b8f8b1659167f2a3f32dba2492ed55a8e0e06d Mon Sep 17 00:00:00 2001 From: Axel Le Bourhis Date: Wed, 21 Aug 2024 14:02:43 +0200 Subject: [PATCH] net: sockets: Update msg_controllen in recvmsg properly If adding any control data like timestamping or pkt_info fails, the msg_controllen wasn't properly cleared. This commit aims to fix this by clearing the msg_controllen only when adding control data is successful. Fixes #77303 Signed-off-by: Axel Le Bourhis --- subsys/net/lib/sockets/sockets.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/subsys/net/lib/sockets/sockets.c b/subsys/net/lib/sockets/sockets.c index dc74a229665b259..b61683b0eecc974 100644 --- a/subsys/net/lib/sockets/sockets.c +++ b/subsys/net/lib/sockets/sockets.c @@ -1575,17 +1575,19 @@ static inline ssize_t zsock_recv_dgram(struct net_context *ctx, bool clear_controllen = true; if (IS_ENABLED(CONFIG_NET_CONTEXT_TIMESTAMPING)) { - clear_controllen = false; if (add_timestamping(ctx, pkt, msg) < 0) { msg->msg_flags |= ZSOCK_MSG_CTRUNC; + } else { + clear_controllen = false; } } if (IS_ENABLED(CONFIG_NET_CONTEXT_RECV_PKTINFO) && net_context_is_recv_pktinfo_set(ctx)) { - clear_controllen = false; if (add_pktinfo(ctx, pkt, msg) < 0) { msg->msg_flags |= ZSOCK_MSG_CTRUNC; + } else { + clear_controllen = false; } }