1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-27 03:21:53 +03:00

r5702: Fix bug #2271. Correctly pull out and use resume names in a

directory listing (we were incorrectly understanding what was
returned in the "last name" entry).
Jeremy.
This commit is contained in:
Jeremy Allison 2005-03-09 00:06:27 +00:00 committed by Gerald (Jerry) Carter
parent 76fb181031
commit 4f2da9ecf1

View File

@ -268,24 +268,6 @@ int cli_list_new(struct cli_state *cli,const char *Mask,uint16 attribute,
p = rdata;
/* we might need the lastname for continuations */
if (ff_lastname > 0) {
switch(info_level) {
case 260:
clistr_pull(cli, mask, p+ff_lastname,
sizeof(mask),
data_len-ff_lastname,
STR_TERMINATE);
break;
case 1:
clistr_pull(cli, mask, p+ff_lastname+1,
sizeof(mask),
-1,
STR_TERMINATE);
break;
}
} else {
pstrcpy(mask,"");
}
/* and add them to the dirlist pool */
tdl = SMB_REALLOC(dirlist,dirlist_len + data_len);
@ -299,10 +281,18 @@ int cli_list_new(struct cli_state *cli,const char *Mask,uint16 attribute,
/* put in a length for the last entry, to ensure we can chain entries
into the next packet */
for (p2=p,i=0;i<(ff_searchcount-1);i++)
p2 += interpret_long_filename(cli,info_level,p2,NULL);
for (p2=p,i=0;i<(ff_searchcount-1);i++) {
p2 += interpret_long_filename(cli,info_level,p2,&finfo);
}
SSVAL(p2,0,data_len - PTR_DIFF(p2,p));
/* we might need the lastname for continuations */
if (ff_lastname > 0) {
pstrcpy(mask, finfo.name);
} else {
pstrcpy(mask,"");
}
/* grab the data for later use */
memcpy(dirlist+dirlist_len,p,data_len);
dirlist_len += data_len;