Whamcloud - gitweb
LU-12844 lnet: fix strncpy bound error 18/36418/3
authorJian Yu <yujian@whamcloud.com>
Wed, 9 Oct 2019 21:41:54 +0000 (14:41 -0700)
committerOleg Drokin <green@whamcloud.com>
Thu, 21 Nov 2019 07:36:16 +0000 (07:36 +0000)
This patch fixes the following error while using gcc 8:

liblnetconfig.c: In function ‘lustre_lnet_parse_nids’:
liblnetconfig.c:320:3: error: ‘strncpy’ specified bound depends on
the length of the source argument [-Werror=stringop-overflow=]
   strncpy(entry, cur, len - 1);
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
liblnetconfig.c:310:10: note: length computed here
    len = strlen(cur) + 1;
          ^~~~~~~~~~~
cc1: all warnings being treated as errors

This patch is back-ported from the following one:
Lustre-commit: cebda7a478f9943f10b9a3388377c61a54957a87
Lustre-change: https://review.whamcloud.com/36417

Change-Id: I2d5840fd58c7b7d27ef1b2aa12f1f187d30abbfd
Signed-off-by: Jian Yu <yujian@whamcloud.com>
Reviewed-on: https://review.whamcloud.com/36418
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
lnet/utils/lnetconfig/liblnetconfig.c

index 139c721..6d64d0e 100644 (file)
@@ -317,7 +317,7 @@ int lustre_lnet_parse_nids(char *nids, char **array, int size,
                        finish = i > 0 ? i - 1: 0;
                        goto failed;
                }
-               strncpy(entry, cur, len - 1);
+               memcpy(entry, cur, len - 1);
                entry[len] = '\0';
                new_array[i] = entry;
                if (comma) {