When configured with --picky-developer and using -O3 with gcc 8.1:
../common/system_socket.c: In function ‘parse_ip_mask’:
../common/system_socket.c:229:2: error: ‘strncpy’ specified bound depends on the length of the source argument [-Werror=stringop-overflow=]
strncpy(s, str, len+1);
^~~~~~~~~~~~~~~~~~~~~~
../common/system_socket.c:223:8: note: length computed here
len = strlen(str);
^~~~~~~~~~~
Use strlcpy() instead and check the result.
BUG: https://bugzilla.samba.org/show_bug.cgi?id=13545
Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
ZERO_STRUCT(*addr);
- len = strlen(str);
+ len = strlcpy(s, str, sizeof(s));
if (len >= sizeof(s)) {
DBG_ERR("Address %s is unreasonably long\n", str);
return false;
}
- strncpy(s, str, len+1);
-
p = rindex(s, '/');
if (p == NULL) {
DBG_ERR("Address %s does not contain a mask\n", s);