s3/smbd: cppcheck: Fix ctunullpointer error
authorNoel Power <noel.power@suse.com>
Tue, 21 May 2019 13:36:45 +0000 (13:36 +0000)
committerNoel Power <npower@samba.org>
Wed, 29 May 2019 10:10:23 +0000 (10:10 +0000)
Fixes:

source3/smbd/files.c:783: error: ctunullpointer: Null pointer dereference: buf <--[cppcheck]

Signed-off-by: Noel Power <noel.power@suse.com>
Reviewed-by: Andreas Schneider <asn@samba.org>
source3/smbd/files.c

index 99b4937c99b4a892c55a95613d682c1bd84e1438..46fc4191950a174febbe5771e2720ed187eaf046 100644 (file)
@@ -778,7 +778,18 @@ const struct GUID *fsp_client_guid(const files_struct *fsp)
 
 size_t fsp_fullbasepath(struct files_struct *fsp, char *buf, size_t buflen)
 {
-       int len;
+       int len = 0;
+       char tmp_buf[1] = {'\0'};
+
+       /*
+        * Don't pass NULL buffer to snprintf (to satisfy static checker)
+        * Some callers will call this function with NULL for buf and
+        * 0 for buflen in order to get length of fullbasepatch (without
+        * needing to allocate or write to buf)
+        */
+       if (buf == NULL) {
+               buf = tmp_buf;
+       }
 
        len = snprintf(buf, buflen, "%s/%s", fsp->conn->connectpath,
                       fsp->fsp_name->base_name);