Replace strncpy with memcpy

strncpy is useless here, is dangerous because it doesn't guarantee
that the string is NUL-terminated and causes the following warning:

    ../sway/criteria.c: In function ‘criteria_parse’:
    ../sway/criteria.c:712:25: error: ‘strncpy’ destination unchanged after copying no bytes [-Werror=stringop-truncation]
      712 |                         strncpy(value, valuestart, head - valuestart);
          |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This commit is contained in:
Simon Ser 2022-05-11 17:18:39 +02:00 committed by Simon Zeni
parent 7cfa150788
commit 1e9be019b2

View file

@ -682,7 +682,7 @@ struct criteria *criteria_parse(char *raw, char **error_arg) {
} }
name = calloc(head - namestart + 1, 1); name = calloc(head - namestart + 1, 1);
if (head != namestart) { if (head != namestart) {
strncpy(name, namestart, head - namestart); memcpy(name, namestart, head - namestart);
} }
// Parse token value // Parse token value
skip_spaces(&head); skip_spaces(&head);
@ -709,7 +709,7 @@ struct criteria *criteria_parse(char *raw, char **error_arg) {
} }
} }
value = calloc(head - valuestart + 1, 1); value = calloc(head - valuestart + 1, 1);
strncpy(value, valuestart, head - valuestart); memcpy(value, valuestart, head - valuestart);
if (in_quotes) { if (in_quotes) {
++head; ++head;
in_quotes = false; in_quotes = false;
@ -740,7 +740,7 @@ struct criteria *criteria_parse(char *raw, char **error_arg) {
++head; ++head;
int len = head - raw; int len = head - raw;
criteria->raw = calloc(len + 1, 1); criteria->raw = calloc(len + 1, 1);
strncpy(criteria->raw, raw, len); memcpy(criteria->raw, raw, len);
return criteria; return criteria;
cleanup: cleanup: