finfo->mtime_ts.tv_nsec = finfo->atime_ts.tv_nsec = 0;
finfo->size = IVAL(p,26);
ret = clistr_pull_talloc(ctx,
- cli->inbuf,
- SVAL(cli->inbuf, smb_flg2),
+ NULL,
+ 0,
&finfo->name,
p+30,
12,
{
struct tevent_req *req, *subreq;
struct cli_list_trans_state *state;
- size_t nlen, param_len;
- char *p;
+ size_t param_len;
req = tevent_req_create(mem_ctx, &state,
struct cli_list_trans_state);
state->max_matches = 1366; /* Match W2k */
- state->setup[0] = TRANSACT2_FINDFIRST;
+ SSVAL(&state->setup[0], 0, TRANSACT2_FINDFIRST);
- nlen = 2*(strlen(mask)+1);
- state->param = talloc_array(state, uint8_t, 12+nlen+2);
+ state->param = talloc_array(state, uint8_t, 12);
if (tevent_req_nomem(state->param, req)) {
return tevent_req_post(req, ev);
}
SSVAL(state->param, 6, state->info_level);
SIVAL(state->param, 8, 0);
- p = ((char *)state->param)+12;
- p += clistr_push(state->cli, p, state->mask, nlen,
- STR_TERMINATE);
- param_len = PTR_DIFF(p, state->param);
+ state->param = trans2_bytes_push_str(state->param, cli_ucs2(cli),
+ state->mask, strlen(state->mask)+1,
+ NULL);
+ if (tevent_req_nomem(state->param, req)) {
+ return tevent_req_post(req, ev);
+ }
+ param_len = talloc_get_size(state->param);
subreq = cli_trans_send(state, state->ev, state->cli,
SMBtrans2, NULL, -1, 0, 0,
state->setup, 1, 0,
state->param, param_len, 10,
- NULL, 0, cli->max_xmit);
+ NULL, 0, CLI_BUFFER_SIZE);
if (tevent_req_nomem(subreq, req)) {
return tevent_req_post(req, ev);
}
int i;
DATA_BLOB last_name_raw;
struct file_info *finfo = NULL;
- size_t nlen, param_len;
+ size_t param_len;
min_param = (state->first ? 6 : 4);
return;
}
- state->setup[0] = TRANSACT2_FINDNEXT;
+ SSVAL(&state->setup[0], 0, TRANSACT2_FINDNEXT);
- nlen = 2*(strlen(state->mask) + 1);
-
- param = talloc_realloc(state, state->param, uint8_t,
- 12 + nlen + last_name_raw.length + 2);
+ param = talloc_realloc(state, state->param, uint8_t, 12);
if (tevent_req_nomem(param, req)) {
return;
}
*/
SSVAL(param, 10, (FLAG_TRANS2_FIND_REQUIRE_RESUME
|FLAG_TRANS2_FIND_CLOSE_IF_END));
- p = ((char *)param)+12;
if (last_name_raw.length) {
- memcpy(p, last_name_raw.data, last_name_raw.length);
- p += last_name_raw.length;
+ state->param = trans2_bytes_push_bytes(state->param,
+ last_name_raw.data,
+ last_name_raw.length);
+ if (tevent_req_nomem(state->param, req)) {
+ return;
+ }
data_blob_free(&last_name_raw);
} else {
- p += clistr_push(state->cli, p, state->mask, nlen,
- STR_TERMINATE);
+ state->param = trans2_bytes_push_str(state->param,
+ cli_ucs2(state->cli),
+ state->mask,
+ strlen(state->mask)+1,
+ NULL);
+ if (tevent_req_nomem(state->param, req)) {
+ return;
+ }
}
-
- param_len = PTR_DIFF(p, param);
+ param_len = talloc_get_size(state->param);
subreq = cli_trans_send(state, state->ev, state->cli,
SMBtrans2, NULL, -1, 0, 0,
state->setup, 1, 0,
state->param, param_len, 10,
- NULL, 0, state->cli->max_xmit);
+ NULL, 0, CLI_BUFFER_SIZE);
if (tevent_req_nomem(subreq, req)) {
return;
}
return NULL;
}
- if (cli->protocol <= PROTOCOL_LANMAN1) {
+ if (cli_state_protocol(cli) <= PROTOCOL_LANMAN1) {
subreq = cli_list_old_send(state, ev, cli, mask, attribute);
state->recv_fn = cli_list_old_recv;
} else {
goto fail;
}
- info_level = (cli->capabilities & CAP_NT_SMBS)
+ info_level = (cli_state_capabilities(cli) & CAP_NT_SMBS)
? SMB_FIND_FILE_BOTH_DIRECTORY_INFO : SMB_FIND_INFO_STANDARD;
req = cli_list_send(frame, ev, cli, mask, attribute, info_level);