diff --git a/package/safeclib/0001-vsnprintf_s-Increase-Buffer-Size-by-1.patch b/package/safeclib/0001-vsnprintf_s-Increase-Buffer-Size-by-1.patch new file mode 100644 index 0000000000..f99f56f08c --- /dev/null +++ b/package/safeclib/0001-vsnprintf_s-Increase-Buffer-Size-by-1.patch @@ -0,0 +1,47 @@ +From f59a0c8c1b5cf19cd0ed7f9bfb3a1e85f54113d0 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Wed, 13 Aug 2025 20:23:48 -0700 +Subject: [PATCH] vsnprintf_s: Increase Buffer Size by 1 + +It is a buffer overflow warning that GCC 15.2 is catching. +The issue is that it's trying to write to `buf[len++]` when len could +potentially be 31, which would write to buf[31] in a buffer of size 32 +(valid indices 0-31), but the len++ post-increment means it could +theoretically write beyond the buffer bounds. + +Fixes + +../../sources/safec-3.9.1/src/str/vsnprintf_s.c: In function 'safec_ftoa.isra': +../../sources/safec-3.9.1/src/str/vsnprintf_s.c:523:24: error: writing 32 bytes into a region of size 31 [-Werror=stringop-overflow=] + 523 | buf[len++] = '0'; + | ~~~~~~~~~~~^~~~~ +../../sources/safec-3.9.1/src/str/vsnprintf_s.c:394:10: note: at offset [1, 32] into destination object 'buf' of size 32 + 394 | char buf[PRINTF_FTOA_BUFFER_SIZE]; + | ^~~ +cc1: all warnings being treated as errors + +Signed-off-by: Khem Raj + +Upstream: https://github.com/rurban/safeclib/commit/f59a0c8c1b5cf19cd0ed7f9bfb3a1e85f54113d0 + +Signed-off-by: Bernd Kuhls +--- + src/str/vsnprintf_s.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/str/vsnprintf_s.c b/src/str/vsnprintf_s.c +index fa53ab42..0b62c3cb 100644 +--- a/src/str/vsnprintf_s.c ++++ b/src/str/vsnprintf_s.c +@@ -391,7 +391,7 @@ static size_t safec_ftoa(out_fct_type out, const char *funcname, char *buffer, + size_t idx, size_t maxlen, double value, + unsigned int prec, unsigned int width, + unsigned int flags) { +- char buf[PRINTF_FTOA_BUFFER_SIZE]; ++ char buf[PRINTF_FTOA_BUFFER_SIZE + 1]; // Add extra byte for safety + size_t len = 0U, off = 0U; + double tmp; + double diff = 0.0; +-- +2.47.3 + diff --git a/package/safeclib/0002-vsnprintf_s-Increase-Buffer-Size-by-1.patch b/package/safeclib/0002-vsnprintf_s-Increase-Buffer-Size-by-1.patch new file mode 100644 index 0000000000..4301426747 --- /dev/null +++ b/package/safeclib/0002-vsnprintf_s-Increase-Buffer-Size-by-1.patch @@ -0,0 +1,50 @@ +From 79e1445f4b3689526b46121b1218cab802b9ae88 Mon Sep 17 00:00:00 2001 +From: Bernd Kuhls +Date: Sat, 10 Jan 2026 12:16:22 +0100 +Subject: [PATCH] vsnprintf_s: Increase Buffer Size by 1 + +Another fix similar to https://github.com/rurban/safeclib/commit/f59a0c8c1b5cf19cd0ed7f9bfb3a1e85f54113d0 + +In function 'safec_ntoa_format', + inlined from 'safec_ntoa_long' at str/vsnprintf_s.c:331:12: +str/vsnprintf_s.c:256:24: error: writing 32 bytes into a region of size 0 [-Werror=stringop-overflow=] + 256 | buf[len++] = '0'; + | ~~~~~~~~~~~^~~~~ +str/vsnprintf_s.c: In function 'safec_ntoa_long': +str/vsnprintf_s.c:312:10: note: at offset 32 into destination object 'buf' of size 32 + 312 | char buf[PRINTF_NTOA_BUFFER_SIZE]; + | ^~~ +In function 'safec_ntoa_format', + inlined from 'safec_ntoa_long' at str/vsnprintf_s.c:331:12: +str/vsnprintf_s.c:260:24: error: writing 32 bytes into a region of size 0 [-Werror=stringop-overflow=] + 260 | buf[len++] = '0'; + | ~~~~~~~~~~~^~~~~ +str/vsnprintf_s.c: In function 'safec_ntoa_long': +str/vsnprintf_s.c:312:10: note: at offset 32 into destination object 'buf' of size 32 + 312 | char buf[PRINTF_NTOA_BUFFER_SIZE]; + | ^~~ +cc1: all warnings being treated as errors + +Upstream: https://github.com/rurban/safeclib/commit/79e1445f4b3689526b46121b1218cab802b9ae88 + +Signed-off-by: Bernd Kuhls +--- + src/str/vsnprintf_s.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/str/vsnprintf_s.c b/src/str/vsnprintf_s.c +index 0b62c3cb..cf8e866e 100644 +--- a/src/str/vsnprintf_s.c ++++ b/src/str/vsnprintf_s.c +@@ -309,7 +309,7 @@ static size_t safec_ntoa_long(out_fct_type out, const char *funcname, + unsigned long value, bool negative, + unsigned long base, unsigned int prec, + unsigned int width, unsigned int flags) { +- char buf[PRINTF_NTOA_BUFFER_SIZE]; ++ char buf[PRINTF_NTOA_BUFFER_SIZE + 1]; + size_t len = 0U; + + // no hash for 0 values +-- +2.47.3 +