]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
r21769: Attempt to fix bug #4384 in old search code.
authorJeremy Allison <jra@samba.org>
Fri, 9 Mar 2007 02:16:03 +0000 (02:16 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 17:18:31 +0000 (12:18 -0500)
We were accessing a pathname that hadn't gone
through unix_convert ! That's a big no-no...
Jeremy.

source/smbd/reply.c

index f85f635d6b5f302eae1a756d63914f7dea331d03..a9c94b81630e2e912d6f13567474e12dd7fc374b 100644 (file)
@@ -967,16 +967,13 @@ int reply_search(connection_struct *conn, char *inbuf,char *outbuf, int dum_size
 
        if (status_len == 0) {
                SMB_STRUCT_STAT sbuf;
-               pstring dir2;
 
                pstrcpy(directory,path);
-               pstrcpy(dir2,path);
                nt_status = unix_convert(conn, directory, True, NULL, &sbuf);
                if (!NT_STATUS_IS_OK(nt_status)) {
                        END_PROFILE(SMBsearch);
                        return ERROR_NT(nt_status);
                }
-               unix_format(dir2);
 
                nt_status = check_name(conn, directory);
                if (!NT_STATUS_IS_OK(nt_status)) {
@@ -984,23 +981,16 @@ int reply_search(connection_struct *conn, char *inbuf,char *outbuf, int dum_size
                        return ERROR_NT(nt_status);
                }
 
-               p = strrchr_m(dir2,'/');
-               if (p == NULL) {
-                       pstrcpy(mask,dir2);
-                       *dir2 = 0;
-               } else {
-                       *p = 0;
-                       pstrcpy(mask,p+1);
-               }
-
                p = strrchr_m(directory,'/');
                if (!p) {
-                       *directory = 0;
+                       pstrcpy(mask,directory);
+                       pstrcpy(directory,".");
                } else {
                        *p = 0;
+                       pstrcpy(mask,p+1);
                }
 
-               if (strlen(directory) == 0) {
+               if (*directory == '\0') {
                        pstrcpy(directory,".");
                }
                memset((char *)status,'\0',21);