From: Jeremy Allison Date: Fri, 9 Mar 2007 02:16:03 +0000 (+0000) Subject: r21769: Attempt to fix bug #4384 in old search code. X-Git-Tag: samba-misc-tags/initial-v3-0-unstable~970 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=33a67fd39e1a51944bf0783350aa6ef95dfafb84;p=thirdparty%2Fsamba.git r21769: Attempt to fix bug #4384 in old search code. We were accessing a pathname that hadn't gone through unix_convert ! That's a big no-no... Jeremy. --- diff --git a/source/smbd/reply.c b/source/smbd/reply.c index f85f635d6b5..a9c94b81630 100644 --- a/source/smbd/reply.c +++ b/source/smbd/reply.c @@ -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);