smbd: Simplify fsp_fullbasepath()
authorVolker Lendecke <vl@samba.org>
Sun, 29 Oct 2023 11:10:08 +0000 (12:10 +0100)
committerVolker Lendecke <vl@samba.org>
Tue, 7 Nov 2023 12:46:37 +0000 (12:46 +0000)
Don't call snprintf() if not necessary.

Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
source3/smbd/files.c

index 0c54ca3746840154460938f054314287abac8d8e..15cc7d82be113767a6ffdbc7d1f0671f9bb4539f 100644 (file)
@@ -2268,17 +2268,10 @@ NTSTATUS fsp_set_smb_fname(struct files_struct *fsp,
 size_t fsp_fullbasepath(struct files_struct *fsp, char *buf, size_t buflen)
 {
        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 fullbasepath (without
-        * needing to allocate or write to buf)
-        */
-       if (buf == NULL) {
-               buf = tmp_buf;
-               SMB_ASSERT(buflen==0);
+       if ((buf == NULL) || (buflen == 0)) {
+               return strlen(fsp->conn->connectpath) + 1 +
+                      strlen(fsp->fsp_name->base_name);
        }
 
        len = snprintf(buf, buflen, "%s/%s", fsp->conn->connectpath,