/*
- Unix SMB/Netbios implementation.
- Version 3.0
+ Unix SMB/CIFS implementation.
client directory list routines
Copyright (C) Andrew Tridgell 1994-1998
len = CVAL(p, 26);
p += 27;
p += clistr_align_in(cli, p, 0);
+ /* the len+2 below looks strange but it is
+ important to cope with the differences
+ between win2000 and win9x for this call
+ (tridge) */
p += clistr_pull(cli, finfo->name, p,
- sizeof(finfo->name),
- len,
- STR_TERMINATE);
+ sizeof(finfo->name),
+ len+2,
+ STR_TERMINATE);
return PTR_DIFF(p, base);
case 2: /* this is what OS/2 uses mostly */
total_received += ff_searchcount;
- if (rdata) free(rdata); rdata = NULL;
- if (rparam) free(rparam); rparam = NULL;
-
+ SAFE_FREE(rdata);
+ SAFE_FREE(rparam);
+
DEBUG(3,("received %d entries (eos=%d)\n",
ff_searchcount,ff_eos));
}
/* free up the dirlist buffer */
- if (dirlist) free(dirlist);
+ SAFE_FREE(dirlist);
return(total_received);
}
set_message(cli->outbuf,2,0,True);
- CVAL(cli->outbuf,smb_com) = SMBsearch;
+ SCVAL(cli->outbuf,smb_com,SMBsearch);
SSVAL(cli->outbuf,smb_tid,cli->cnum);
cli_setup_packet(cli);
if (!tdl) {
DEBUG(0,("cli_list_old: failed to expand dirlist"));
- if (dirlist) free(dirlist);
+ SAFE_FREE(dirlist);
return 0;
}
else dirlist = tdl;
memset(cli->inbuf,'\0',smb_size);
set_message(cli->outbuf,2,0,True);
- CVAL(cli->outbuf,smb_com) = SMBfclose;
+ SCVAL(cli->outbuf,smb_com,SMBfclose);
SSVAL(cli->outbuf,smb_tid,cli->cnum);
cli_setup_packet(cli);
fn(&finfo, Mask, state);
}
- if (dirlist) free(dirlist);
+ SAFE_FREE(dirlist);
return(num_received);
}