NTSTATUS cli_smb2_list(struct cli_state *cli,
const char *pathname,
- uint16_t attribute,
+ uint32_t attribute,
NTSTATUS (*fn)(const char *,
struct file_info *,
const char *,
goto fail;
}
- if (dir_check_ftype(
- finfo->attr, (uint32_t)attribute)) {
+ if (dir_check_ftype(finfo->attr, attribute)) {
/*
* Only process if attributes match.
* On SMB1 server does this, so on
struct timespec *write_time,
struct timespec *change_time,
off_t *size,
- uint16_t *pattr,
+ uint32_t *pattr,
SMB_INO_T *ino)
{
NTSTATUS status;
struct smb2_hnd *ph = NULL;
uint16_t fnum = 0xffff;
- uint32_t attr = 0;
TALLOC_CTX *frame = talloc_stackframe();
if (smbXcli_conn_has_async_calls(cli->conn)) {
status = cli_smb2_qfileinfo_basic(cli,
fnum,
- &attr,
+ pattr,
size,
create_time,
access_time,
fail:
- if (NT_STATUS_IS_OK(status)) {
- if (pattr != NULL) {
- *pattr = attr;
- }
- }
-
if (fnum != 0xffff) {
cli_smb2_close_fnum(cli, fnum);
}
NTSTATUS cli_smb2_unlink_recv(struct tevent_req *req);
NTSTATUS cli_smb2_list(struct cli_state *cli,
const char *pathname,
- uint16_t attribute,
+ uint32_t attribute,
NTSTATUS (*fn)(const char *,
struct file_info *,
const char *,
struct timespec *write_time,
struct timespec *change_time,
off_t *size,
- uint16_t *pattr,
+ uint32_t *pattr,
SMB_INO_T *ino);
NTSTATUS cli_smb2_qpathinfo_streams(struct cli_state *cli,
const char *name,
NTSTATUS status = NT_STATUS_NO_MEMORY;
if (smbXcli_conn_protocol(cli->conn) >= PROTOCOL_SMB2_02) {
- return cli_smb2_qpathinfo2(cli,
+ uint32_t attr = 0;
+ status = cli_smb2_qpathinfo2(cli,
fname,
create_time,
access_time,
write_time,
change_time,
size,
- pattr,
+ &attr,
ino);
+ if (!NT_STATUS_IS_OK(status)) {
+ return status;
+ }
+ if (pattr != NULL) {
+ *pattr = attr;
+ }
+ return status;
}
frame = talloc_stackframe();