nt.in.max_param = 0;
nt.in.max_data = parms->ntioctl.in.max_data;
nt.in.setup_count = 4;
- nt.in.setup = (uint16_t *)setup;
+ nt.in.setup = setup;
SIVAL(setup, 0, parms->ntioctl.in.function);
SSVAL(setup, 4, parms->ntioctl.in.file.fnum);
SCVAL(setup, 6, parms->ntioctl.in.fsctl);
SMBCLI_CHECK_WCT(req, 18 + parms->out.setup_count);
if (parms->out.setup_count > 0) {
- int i;
- parms->out.setup = talloc_array(mem_ctx, uint16_t, parms->out.setup_count);
+ parms->out.setup = talloc_array(mem_ctx, uint8_t,
+ parms->out.setup_count*2);
if (!parms->out.setup) {
req->status = NT_STATUS_NO_MEMORY;
return smbcli_request_destroy(req);
}
- for (i=0;i<parms->out.setup_count;i++) {
- parms->out.setup[i] = SVAL(req->in.vwv, VWV(18+i));
- }
+ memcpy(parms->out.setup, VWV(18) + (uint8_t *)req->out.vwv,
+ sizeof(uint16_t) * parms->out.setup_count);
}
while (recvd_data < total_data ||
{
trans->out.setup_count = setup_count;
if (setup_count != 0) {
- trans->out.setup = talloc_zero_array(op, uint16_t, setup_count);
+ trans->out.setup = talloc_zero_array(op, uint8_t, setup_count*2);
NT_STATUS_HAVE_NO_MEMORY(trans->out.setup);
}
trans->out.params = data_blob_talloc(op, NULL, param_size);
uint16_t this_data, this_param, max_bytes;
uint_t align1 = 1, align2 = (params_left ? 2 : 0);
struct smbsrv_request *this_req;
- int i;
max_bytes = req_max_data(req) - (align1 + align2);
SIVAL(this_req->out.vwv, 31, PTR_DIFF(data, trans->out.data.data));
SCVAL(this_req->out.vwv, 35, trans->out.setup_count);
- for (i=0;i<trans->out.setup_count;i++) {
- SSVAL(this_req->out.vwv, VWV(18+i), trans->out.setup[i]);
- }
-
+ memcpy((char *)(this_req->out.vwv) + VWV(18), trans->out.setup,
+ sizeof(uint16_t) * trans->out.setup_count);
memset(this_req->out.data, 0, align1);
if (this_param != 0) {
memcpy(this_req->out.data + align1, params, this_param);
}
/* parse out the setup words */
- trans->in.setup = talloc_array(req, uint16_t, trans->in.setup_count);
+ trans->in.setup = talloc_array(req, uint8_t, trans->in.setup_count*2);
if (!trans->in.setup) {
smbsrv_send_error(req, NT_STATUS_NO_MEMORY);
return;
}
-
memcpy(trans->in.setup, (char *)(req->in.vwv) + VWV(19),
sizeof(uint16_t) * trans->in.setup_count);