From: Jeremy Allison Date: Wed, 9 Mar 2005 00:06:27 +0000 (+0000) Subject: r5702: Fix bug #2271. Correctly pull out and use resume names in a X-Git-Tag: samba-misc-tags/initial-v3-0-unstable~5165 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4f2da9ecf1e5cee4749839ea1b35a942d27de09e;p=thirdparty%2Fsamba.git 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. --- diff --git a/source/libsmb/clilist.c b/source/libsmb/clilist.c index 4e90a79719e..d60739cf7c4 100644 --- a/source/libsmb/clilist.c +++ b/source/libsmb/clilist.c @@ -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;