diff options
author | Andrew Tridgell <tridge@samba.org> | 2001-03-16 03:25:33 +0000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2001-03-16 03:25:33 +0000 |
commit | 7906e8168cf717f19ba69435ddf353ce7db110db (patch) | |
tree | aee6aa7da16c76b64df6f5a3391bafb3d8ca7279 | |
parent | 871a4294043e2e74d906f63ad97a31e35abd0374 (diff) | |
download | samba-7906e8168cf717f19ba69435ddf353ce7db110db.tar.gz samba-7906e8168cf717f19ba69435ddf353ce7db110db.tar.bz2 samba-7906e8168cf717f19ba69435ddf353ce7db110db.zip |
converted reply_search
(This used to be commit 0331f93a8117d4c295cda327c3a290296ff621d0)
-rw-r--r-- | source3/smbd/reply.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c index 55e6fb5255..b559b9bdc5 100644 --- a/source3/smbd/reply.c +++ b/source3/smbd/reply.c @@ -1295,7 +1295,7 @@ int reply_search(connection_struct *conn, char *inbuf,char *outbuf, int dum_size char *p; BOOL ok = False; int status_len; - char *path; + pstring path; char status[21]; int dptr_num= -1; BOOL check_descend = False; @@ -1313,9 +1313,11 @@ int reply_search(connection_struct *conn, char *inbuf,char *outbuf, int dum_size outsize = set_message(outbuf,1,3,True); maxentries = SVAL(inbuf,smb_vwv0); dirtype = SVAL(inbuf,smb_vwv1); - path = smb_buf(inbuf) + 1; - status_len = SVAL(smb_buf(inbuf),3 + strlen(path)); - + p = smb_buf(inbuf) + 1; + p += srvstr_pull(inbuf, path, p, sizeof(path), -1, STR_TERMINATE); + p++; + status_len = SVAL(p, 0); + p += 2; /* dirtype &= ~aDIR; */ @@ -1324,8 +1326,8 @@ int reply_search(connection_struct *conn, char *inbuf,char *outbuf, int dum_size SMB_STRUCT_STAT sbuf; pstring dir2; - pstrcpy(directory,smb_buf(inbuf)+1); - pstrcpy(dir2,smb_buf(inbuf)+1); + pstrcpy(directory,path); + pstrcpy(dir2,path); unix_convert(directory,conn,0,&bad_path,&sbuf); unix_format(dir2); @@ -1357,7 +1359,7 @@ int reply_search(connection_struct *conn, char *inbuf,char *outbuf, int dum_size } else { - memcpy(status,smb_buf(inbuf) + 1 + strlen(path) + 4,21); + memcpy(status,p,21); dirtype = CVAL(status,0) & 0x1F; conn->dirptr = dptr_fetch(status+12,&dptr_num); if (!conn->dirptr) |