Replace strncpy call with memcpy when result is not NUL-terminated

This fixes a new warning from GCC 8.1, -Wstringop-truncation:
https://gcc.gnu.org/gcc-8/changes.html
https://gcc.gnu.org/onlinedocs/gcc-8.1.0/gcc/Warning-Options.html#index-Wstringop-truncation

Replacing with memcpy is what gcc suggests:
> As another example, the following call to strncpy results in copying
> to d just the characters preceding the terminating NUL, without
> appending the NUL to the end. Assuming the result of strncpy is
> necessarily a NUL-terminated string is a common mistake, and so the
> call is diagnosed. To avoid the warning when the result is not
> expected to be NUL-terminated, call memcpy instead.
>    void copy (char *d, const char *s)
>    {
>      strncpy (d, s, strlen (s));
>    }
This commit is contained in:
Orestis Floros 2018-05-08 17:05:46 +03:00
parent 1cdb1ab721
commit f4981f97bc
No known key found for this signature in database
GPG Key ID: E9AD9F32E401E38F
2 changed files with 2 additions and 2 deletions

View File

@ -309,7 +309,7 @@ int i3_send_msg(uint32_t type, const char *payload) {
char *buffer = smalloc(to_write); char *buffer = smalloc(to_write);
char *walk = buffer; char *walk = buffer;
strncpy(buffer, I3_IPC_MAGIC, strlen(I3_IPC_MAGIC)); memcpy(buffer, I3_IPC_MAGIC, strlen(I3_IPC_MAGIC));
walk += strlen(I3_IPC_MAGIC); walk += strlen(I3_IPC_MAGIC);
memcpy(walk, &len, sizeof(uint32_t)); memcpy(walk, &len, sizeof(uint32_t));
walk += sizeof(uint32_t); walk += sizeof(uint32_t);

View File

@ -604,7 +604,7 @@ void handle_button(xcb_button_press_event_t *event) {
const size_t len = namelen + strlen("workspace \"\"") + 1; const size_t len = namelen + strlen("workspace \"\"") + 1;
char *buffer = scalloc(len + num_quotes, 1); char *buffer = scalloc(len + num_quotes, 1);
strncpy(buffer, "workspace \"", strlen("workspace \"")); memcpy(buffer, "workspace \"", strlen("workspace \""));
size_t inpos, outpos; size_t inpos, outpos;
for (inpos = 0, outpos = strlen("workspace \""); for (inpos = 0, outpos = strlen("workspace \"");
inpos < namelen; inpos < namelen;