mirror of
https://github.com/samba-team/samba.git
synced 2025-08-02 00:22:11 +03:00
s3: Convert cli_qfilename to cli_qfileinfo
This commit is contained in:
@ -2327,7 +2327,8 @@ NTSTATUS cli_qpathinfo_streams(struct cli_state *cli, const char *fname,
|
|||||||
TALLOC_CTX *mem_ctx,
|
TALLOC_CTX *mem_ctx,
|
||||||
unsigned int *pnum_streams,
|
unsigned int *pnum_streams,
|
||||||
struct stream_struct **pstreams);
|
struct stream_struct **pstreams);
|
||||||
bool cli_qfilename(struct cli_state *cli, uint16_t fnum, char *name, size_t namelen);
|
NTSTATUS cli_qfilename(struct cli_state *cli, uint16_t fnum, char *name,
|
||||||
|
size_t namelen);
|
||||||
bool cli_qfileinfo_basic(struct cli_state *cli, uint16_t fnum,
|
bool cli_qfileinfo_basic(struct cli_state *cli, uint16_t fnum,
|
||||||
uint16 *mode, SMB_OFF_T *size,
|
uint16 *mode, SMB_OFF_T *size,
|
||||||
struct timespec *create_time,
|
struct timespec *create_time,
|
||||||
|
@ -1097,47 +1097,25 @@ static bool parse_streams_blob(TALLOC_CTX *mem_ctx, const uint8_t *rdata,
|
|||||||
Send a qfileinfo QUERY_FILE_NAME_INFO call.
|
Send a qfileinfo QUERY_FILE_NAME_INFO call.
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
bool cli_qfilename(struct cli_state *cli, uint16_t fnum, char *name, size_t namelen)
|
NTSTATUS cli_qfilename(struct cli_state *cli, uint16_t fnum, char *name,
|
||||||
|
size_t namelen)
|
||||||
{
|
{
|
||||||
unsigned int data_len = 0;
|
uint8_t *rdata;
|
||||||
unsigned int param_len = 0;
|
uint32_t num_rdata;
|
||||||
uint16 setup = TRANSACT2_QFILEINFO;
|
NTSTATUS status;
|
||||||
char param[4];
|
|
||||||
char *rparam=NULL, *rdata=NULL;
|
|
||||||
|
|
||||||
param_len = 4;
|
status = cli_qfileinfo(talloc_tos(), cli, fnum,
|
||||||
SSVAL(param, 0, fnum);
|
SMB_QUERY_FILE_NAME_INFO,
|
||||||
SSVAL(param, 2, SMB_QUERY_FILE_NAME_INFO);
|
4, cli->max_xmit,
|
||||||
|
&rdata, &num_rdata);
|
||||||
if (!cli_send_trans(cli, SMBtrans2,
|
if (!NT_STATUS_IS_OK(status)) {
|
||||||
NULL, /* name */
|
return status;
|
||||||
-1, 0, /* fid, flags */
|
|
||||||
&setup, 1, 0, /* setup, length, max */
|
|
||||||
param, param_len, 2, /* param, length, max */
|
|
||||||
NULL, data_len, cli->max_xmit /* data, length, max */
|
|
||||||
)) {
|
|
||||||
return False;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!cli_receive_trans(cli, SMBtrans2,
|
|
||||||
&rparam, ¶m_len,
|
|
||||||
&rdata, &data_len)) {
|
|
||||||
return False;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!rdata || data_len < 4) {
|
|
||||||
SAFE_FREE(rparam);
|
|
||||||
SAFE_FREE(rdata);
|
|
||||||
return False;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
clistr_pull(cli->inbuf, name, rdata+4, namelen, IVAL(rdata, 0),
|
clistr_pull(cli->inbuf, name, rdata+4, namelen, IVAL(rdata, 0),
|
||||||
STR_UNICODE);
|
STR_UNICODE);
|
||||||
|
TALLOC_FREE(rdata);
|
||||||
SAFE_FREE(rparam);
|
return NT_STATUS_OK;
|
||||||
SAFE_FREE(rdata);
|
|
||||||
|
|
||||||
return True;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
|
@ -2984,7 +2984,7 @@ static bool run_trans2test(int dummy)
|
|||||||
correct = False;
|
correct = False;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!cli_qfilename(cli, fnum, pname, sizeof(pname))) {
|
if (!NT_STATUS_IS_OK(cli_qfilename(cli, fnum, pname, sizeof(pname)))) {
|
||||||
printf("ERROR: qfilename failed (%s)\n", cli_errstr(cli));
|
printf("ERROR: qfilename failed (%s)\n", cli_errstr(cli));
|
||||||
correct = False;
|
correct = False;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user