diff options
author | Sergei Trofimovich <slyich@gmail.com> | 2023-11-28 22:17:21 +0000 |
---|---|---|
committer | Simon Ser <contact@emersion.fr> | 2023-11-29 10:30:17 +0100 |
commit | 2cd73a33c26ea6510a2f50359b1c550cd9b4fead (patch) | |
tree | acd0e877f677059e33ee3d153c1415a59e094e94 | |
parent | Update README.de.md to match the EN one (diff) | |
download | sway-2cd73a33c26ea6510a2f50359b1c550cd9b4fead.tar.gz sway-2cd73a33c26ea6510a2f50359b1c550cd9b4fead.tar.zst sway-2cd73a33c26ea6510a2f50359b1c550cd9b4fead.zip |
sway/config.c: use `memcpy()` for known buffer size
`gcc-14` added a new warning around dangerous use of `strncpy()` withi
known overflow:
../sway/config.c: In function 'do_var_replacement':
../sway/config.c:983:33: error: '__builtin___strncpy_chk' specified bound depends on the length of the source argument [-Werror=stringop-truncation]
983 | strncpy(newptr, var->value, vvlen);
| ^
../sway/config.c:971:45: note: length computed here
971 | int vvlen = strlen(var->value);
| ^~~~~~~~~~~~~~~~~~
It's a bit fishy to rely on truncating behaviour of `strncpy()`. The
change uses `memcpy()` as more explicit way to express copy of `vvlen`
bytes.
-rw-r--r-- | sway/config.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sway/config.c b/sway/config.c index 8c8c148d..4b51dc73 100644 --- a/sway/config.c +++ b/sway/config.c | |||
@@ -975,7 +975,7 @@ char *do_var_replacement(char *str) { | |||
975 | int offset = find - str; | 975 | int offset = find - str; |
976 | strncpy(newptr, str, offset); | 976 | strncpy(newptr, str, offset); |
977 | newptr += offset; | 977 | newptr += offset; |
978 | strncpy(newptr, var->value, vvlen); | 978 | memcpy(newptr, var->value, vvlen); |
979 | newptr += vvlen; | 979 | newptr += vvlen; |
980 | strcpy(newptr, find + vnlen); | 980 | strcpy(newptr, find + vnlen); |
981 | free(str); | 981 | free(str); |