tipc: use destination length for copy string
authorGuoqing Jiang <gqjiang@suse.com>
Fri, 19 Oct 2018 04:08:22 +0000 (12:08 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 8 Dec 2018 12:03:41 +0000 (13:03 +0100)
commit 29e270fc32192e7729057963ae7120663856c93e upstream.

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/tipc/subscr.c

index be3d9e3183dcb1ce929584a074755c1ce0969d0f..959c9aea3d1a4dba0d467d6f5c5c15530b73bb9b 100644 (file)
@@ -375,7 +375,7 @@ int tipc_topsrv_start(struct net *net)
        topsrv->tipc_conn_new           = tipc_subscrb_connect_cb;
        topsrv->tipc_conn_release       = tipc_subscrb_release_cb;
 
-       strncpy(topsrv->name, name, strlen(name) + 1);
+       strscpy(topsrv->name, name, sizeof(topsrv->name));
        tn->topsrv = topsrv;
        atomic_set(&tn->subscription_count, 0);