From 419e2a332a12218093afbf16f9bd138c33e82120 Mon Sep 17 00:00:00 2001 From: Tim Anderson Date: Thu, 1 Oct 2026 13:22:49 +1000 Subject: [PATCH] Fix undefined behaviour in MSG_STRING_DUP calling memccpy with src and dest overlapping is undefined behaviour and valgrind complains. This commit changes MSG_STRING_DUP to use stpcpy instead. --- libsofia-sip-ua/msg/sofia-sip/msg_parser.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libsofia-sip-ua/msg/sofia-sip/msg_parser.h b/libsofia-sip-ua/msg/sofia-sip/msg_parser.h index f7d22d0df..d74ad9700 100644 --- a/libsofia-sip-ua/msg/sofia-sip/msg_parser.h +++ b/libsofia-sip-ua/msg/sofia-sip/msg_parser.h @@ -228,7 +228,7 @@ SOFIAPUBFUN issize_t msg_parse_next_field(su_home_t *home, msg_header_t *prev, /** Duplicate string. @HI */ #define MSG_STRING_DUP(p, d, s) \ - (void)((s)?((p)=(char*)memccpy((void *)((d)=(char*)p),(s),0,INT_MAX))\ + (void)((s)?((p)=(char*)stpcpy((void *)((d)=(char*)p),(s)) + 1)\ :((d)=NULL)) /* Solaris has broken memccpy - it considers last argument as signed */