cifs: replace snprintf with scnprintf
authorRonnie Sahlberg <lsahlber@redhat.com>
Fri, 8 Feb 2019 23:51:11 +0000 (09:51 +1000)
committerSteve French <stfrench@microsoft.com>
Tue, 5 Mar 2019 02:05:34 +0000 (20:05 -0600)
a trivial patch that replaces all use of snprintf with scnprintf.
scnprintf() is generally seen as a safer function to use than
snprintf for many use cases.

In our case, there is no actual difference between the two since we never
look at the return value. Thus we did not have any of the bugs that
scnprintf protects against and the patch does nothing.

However, for people reading our code it will be a receipt that we
have done our due dilligence and checked our code for this type of bugs.

See the presentation "Making C Less Dangerous In The Linux Kernel"
at this years LCA

Signed-off-by: Ronnie Sahlberg <lsahlber@redhat.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/cifs/cifssmb.c
fs/cifs/connect.c
fs/cifs/link.c
fs/cifs/smb2pdu.c
fs/cifs/smbdirect.c

index 551924beb86f8be7d0c010db1853626a8c2ca34c..6bd3605b9b65686d62eed5316e73687abe06a89d 100644 (file)
@@ -139,8 +139,8 @@ static int __cifs_reconnect_tcon(const struct nls_table *nlsc,
                return -ENOMEM;
 
        if (tcon->ipc) {
-               snprintf(tree, MAX_TREE_SIZE, "\\\\%s\\IPC$",
-                        tcon->ses->server->hostname);
+               scnprintf(tree, MAX_TREE_SIZE, "\\\\%s\\IPC$",
+                         tcon->ses->server->hostname);
                rc = CIFSTCon(0, tcon->ses, tree, tcon, nlsc);
                goto out;
        }
@@ -172,7 +172,7 @@ static int __cifs_reconnect_tcon(const struct nls_table *nlsc,
                        continue;
                }
 
-               snprintf(tree, MAX_TREE_SIZE, "\\%s", tgt);
+               scnprintf(tree, MAX_TREE_SIZE, "\\%s", tgt);
 
                rc = CIFSTCon(0, tcon->ses, tree, tcon, nlsc);
                if (!rc)
index 2ed773b395a480155db9a6797c0e95d47547c796..7c9108ce3de088b1cecc1a8500e132ab70bc1fed 100644 (file)
@@ -348,7 +348,7 @@ static int reconn_set_ipaddr(struct TCP_Server_Info *server)
                cifs_dbg(FYI, "%s: failed to create UNC path\n", __func__);
                return -ENOMEM;
        }
-       snprintf(unc, len, "\\\\%s", server->hostname);
+       scnprintf(unc, len, "\\\\%s", server->hostname);
 
        rc = dns_resolve_server_name_to_ip(unc, &ipaddr);
        kfree(unc);
@@ -2775,7 +2775,7 @@ cifs_setup_ipc(struct cifs_ses *ses, struct smb_vol *volume_info)
        if (tcon == NULL)
                return -ENOMEM;
 
-       snprintf(unc, sizeof(unc), "\\\\%s\\IPC$", ses->server->hostname);
+       scnprintf(unc, sizeof(unc), "\\\\%s\\IPC$", ses->server->hostname);
 
        /* cannot fail */
        nls_codepage = load_nls_default();
@@ -4203,7 +4203,7 @@ static int update_vol_info(const struct dfs_cache_tgt_iterator *tgt_it,
        new_unc = kmalloc(len, GFP_KERNEL);
        if (!new_unc)
                return -ENOMEM;
-       snprintf(new_unc, len, "\\%s", tgt);
+       scnprintf(new_unc, len, "\\%s", tgt);
 
        kfree(vol->UNC);
        vol->UNC = new_unc;
index 2148b0f60e5e8def04fdcaa9d54ddd137c27bb0d..62216dc8f9f522fc041f2462c74a9d3feb094394 100644 (file)
@@ -103,9 +103,9 @@ parse_mf_symlink(const u8 *buf, unsigned int buf_len, unsigned int *_link_len,
                return rc;
        }
 
-       snprintf(md5_str2, sizeof(md5_str2),
-                CIFS_MF_SYMLINK_MD5_FORMAT,
-                CIFS_MF_SYMLINK_MD5_ARGS(md5_hash));
+       scnprintf(md5_str2, sizeof(md5_str2),
+                 CIFS_MF_SYMLINK_MD5_FORMAT,
+                 CIFS_MF_SYMLINK_MD5_ARGS(md5_hash));
 
        if (strncmp(md5_str1, md5_str2, 17) != 0)
                return -EINVAL;
@@ -142,10 +142,10 @@ format_mf_symlink(u8 *buf, unsigned int buf_len, const char *link_str)
                return rc;
        }
 
-       snprintf(buf, buf_len,
-                CIFS_MF_SYMLINK_LEN_FORMAT CIFS_MF_SYMLINK_MD5_FORMAT,
-                link_len,
-                CIFS_MF_SYMLINK_MD5_ARGS(md5_hash));
+       scnprintf(buf, buf_len,
+                 CIFS_MF_SYMLINK_LEN_FORMAT CIFS_MF_SYMLINK_MD5_FORMAT,
+                 link_len,
+                 CIFS_MF_SYMLINK_MD5_ARGS(md5_hash));
 
        ofs = CIFS_MF_SYMLINK_LINK_OFFSET;
        memcpy(buf + ofs, link_str, link_len);
index 77b3aaa39b35c0c6dc1c96c8bdf0542fa1bf98bc..7d9a1cb9ecae9f2095159c63ef076790f53af1bd 100644 (file)
@@ -173,8 +173,8 @@ static int __smb2_reconnect(const struct nls_table *nlsc,
                return -ENOMEM;
 
        if (tcon->ipc) {
-               snprintf(tree, MAX_TREE_SIZE, "\\\\%s\\IPC$",
-                        tcon->ses->server->hostname);
+               scnprintf(tree, MAX_TREE_SIZE, "\\\\%s\\IPC$",
+                         tcon->ses->server->hostname);
                rc = SMB2_tcon(0, tcon->ses, tree, tcon, nlsc);
                goto out;
        }
@@ -206,7 +206,7 @@ static int __smb2_reconnect(const struct nls_table *nlsc,
                        continue;
                }
 
-               snprintf(tree, MAX_TREE_SIZE, "\\%s", tgt);
+               scnprintf(tree, MAX_TREE_SIZE, "\\%s", tgt);
 
                rc = SMB2_tcon(0, tcon->ses, tree, tcon, nlsc);
                if (!rc)
index a568dac7b3a188157266f5e160138181d9ae7a43..b943b74cd24600574b2cb412d96e18e0a1c214ac 100644 (file)
@@ -1550,7 +1550,7 @@ static int allocate_caches_and_workqueue(struct smbd_connection *info)
        char name[MAX_NAME_LEN];
        int rc;
 
-       snprintf(name, MAX_NAME_LEN, "smbd_request_%p", info);
+       scnprintf(name, MAX_NAME_LEN, "smbd_request_%p", info);
        info->request_cache =
                kmem_cache_create(
                        name,
@@ -1566,7 +1566,7 @@ static int allocate_caches_and_workqueue(struct smbd_connection *info)
        if (!info->request_mempool)
                goto out1;
 
-       snprintf(name, MAX_NAME_LEN, "smbd_response_%p", info);
+       scnprintf(name, MAX_NAME_LEN, "smbd_response_%p", info);
        info->response_cache =
                kmem_cache_create(
                        name,
@@ -1582,7 +1582,7 @@ static int allocate_caches_and_workqueue(struct smbd_connection *info)
        if (!info->response_mempool)
                goto out3;
 
-       snprintf(name, MAX_NAME_LEN, "smbd_%p", info);
+       scnprintf(name, MAX_NAME_LEN, "smbd_%p", info);
        info->workqueue = create_workqueue(name);
        if (!info->workqueue)
                goto out4;