tipc: use destination length for copy string
authorGuoqing Jiang <gqjiang@suse.com>
Fri, 19 Oct 2018 04:08:22 +0000 (12:08 +0800)
committerDavid S. Miller <davem@davemloft.net>
Tue, 23 Oct 2018 02:25:32 +0000 (19:25 -0700)
Got below warning with gcc 8.2 compiler.

net/tipc/topsrv.c: In function ‘tipc_topsrv_start’:
net/tipc/topsrv.c:660:2: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
  strncpy(srv->name, name, strlen(name) + 1);
  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
net/tipc/topsrv.c:660:27: note: length computed here
  strncpy(srv->name, name, strlen(name) + 1);
                           ^~~~~~~~~~~~
So change it to correct length and use strscpy.

Signed-off-by: Guoqing Jiang <gqjiang@suse.com>
Acked-by: Ying Xue <ying.xue@windriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/tipc/topsrv.c

index d8956f7daac417cfeafd9a97e85575f714417c0b..4bdea00571711d16894e991bebee8d878955e97d 100644 (file)
@@ -651,7 +651,7 @@ int tipc_topsrv_start(struct net *net)
        srv->max_rcvbuf_size = sizeof(struct tipc_subscr);
        INIT_WORK(&srv->awork, tipc_topsrv_accept);
 
        srv->max_rcvbuf_size = sizeof(struct tipc_subscr);
        INIT_WORK(&srv->awork, tipc_topsrv_accept);
 
-       strncpy(srv->name, name, strlen(name) + 1);
+       strscpy(srv->name, name, sizeof(srv->name));
        tn->topsrv = srv;
        atomic_set(&tn->subscription_count, 0);
 
        tn->topsrv = srv;
        atomic_set(&tn->subscription_count, 0);