service: fix compilation with GCC 10
authorStijn Tintel <stijn@linux-ipv6.be>
Thu, 13 May 2021 11:59:56 +0000 (14:59 +0300)
committerStijn Tintel <stijn@linux-ipv6.be>
Thu, 13 May 2021 12:56:07 +0000 (15:56 +0300)
commitb777a0b53f7d89ab2a60e3eed7d98036806da9a4
tree2b9da0dd21176da05a9c70a6fa5ebac7f01cc2e4
parent78aa36b0e9808e801c527c6dc47320e593309522
service: fix compilation with GCC 10

Building with GCC 10.3.0 fails with the following error:

service.c:243:10: error: 'strncpy' offset 6 from the object at 'b' is
out of the bounds of referenced subobject 'name' with type 'uint8_t[]'
{aka 'unsigned char[]'} at offset 6 [-Werror=array-bounds]
  243 |  s->id = strncpy(d_id, blobmsg_name(b), n);
        |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Fix it by passing the length returned by strlen to strncpy without
adding an extra byte for the string terminator. Add the extra byte only
in the calloc_a call, which will initialize it to NULL.

Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
Acked-by: Hauke Mehrtens <hauke@hauke-m.de>
Acked-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
service.c