aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrank Lichtenheld2023-09-22 18:04:41 +0200
committerGert Doering2023-09-23 11:51:50 +0200
commit946219115d00c6ae658afcf538249e721e6bd600 (patch)
treec0c2cdcdf249e0c558243825388d1354700d0dce
parent36605648a8974f1f7151a5842e94c75d08410fd0 (diff)
downloadopenvpn-946219115d00c6ae658afcf538249e721e6bd600.zip
openvpn-946219115d00c6ae658afcf538249e721e6bd600.tar.gz
buffer: use memcpy in buf_catrunc
Since we use strlen() to determine the length and then check it ourselves, there is really no point in using strncpy. But the compiler might complain that we use the output of strlen() for the length of strncpy which is usually a sign for bugs: error: ‘strncpy’ specified bound depends on the length of the source argument [-Werror=stringop-overflow=] Warning was at least triggered for mingw-gcc version 10-win32 20220113. Also change the type of len to size_t which avoids potential problems with signed overflow. v2: - make len size_t and change code to avoid any theoretical overflows - remove useless casts v3: - fix off-by-one introduced by v2 %) v4: - ignore unsigned overflow to simplify code Change-Id: If4a67adac4d2e870fd719b58075d39efcd67c671 Signed-off-by: Frank Lichtenheld <frank@lichtenheld.com> Acked-by: Antonio Quartulli <a@unstable.cc> Acked-by: Heiko Hund <heiko@openvpn.net> Acked-by: Gert Doering <gert@greenie.muc.de> (cherry picked from commit c89a97e449baaf60924a362555d35184f188a646) Message-Id: <20230922160441.167168-1-frank@lichtenheld.com> URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg27085.html Signed-off-by: Gert Doering <gert@greenie.muc.de>
-rw-r--r--src/openvpn/buffer.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/openvpn/buffer.c b/src/openvpn/buffer.c
index d099795..7725438 100644
--- a/src/openvpn/buffer.c
+++ b/src/openvpn/buffer.c
@@ -316,10 +316,10 @@ buf_catrunc(struct buffer *buf, const char *str)
{
if (buf_forward_capacity(buf) <= 1)
{
- int len = (int) strlen(str) + 1;
+ size_t len = strlen(str) + 1;
if (len < buf_forward_capacity_total(buf))
{
- strncpynt((char *)(buf->data + buf->capacity - len), str, len);
+ memcpy(buf->data + buf->capacity - len, str, len);
}
}
}