smc: fix out of bound access in smc_nl_get_sys_info()
authorJakub Kicinski <kuba@kernel.org>
Tue, 12 Jan 2021 16:21:21 +0000 (17:21 +0100)
committerJakub Kicinski <kuba@kernel.org>
Wed, 13 Jan 2021 04:22:01 +0000 (20:22 -0800)
smc_clc_get_hostname() sets the host pointer to a buffer
which is not NULL-terminated (see smc_clc_init()).

Reported-by: syzbot+f4708c391121cfc58396@syzkaller.appspotmail.com
Fixes: 099b990bd11a ("net/smc: Add support for obtaining system information")
Signed-off-by: Karsten Graul <kgraul@linux.ibm.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/smc/smc_core.c

index 59342b5..8d866b4 100644 (file)
@@ -246,7 +246,8 @@ int smc_nl_get_sys_info(struct sk_buff *skb, struct netlink_callback *cb)
                goto errattr;
        smc_clc_get_hostname(&host);
        if (host) {
-               snprintf(hostname, sizeof(hostname), "%s", host);
+               memcpy(hostname, host, SMC_MAX_HOSTNAME_LEN);
+               hostname[SMC_MAX_HOSTNAME_LEN] = 0;
                if (nla_put_string(skb, SMC_NLA_SYS_LOCAL_HOST, hostname))
                        goto errattr;
        }