From: Jeremy Allison Date: Wed, 3 Jun 2020 19:13:33 +0000 (-0700) Subject: s3: libsmb: Fix cli_smb2_getatr() to return a 32 bit attribute. X-Git-Tag: ldb-2.2.0~213 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=808d873c0f429ac70e7071fa92c63d5751af0fc4;p=thirdparty%2Fsamba.git s3: libsmb: Fix cli_smb2_getatr() to return a 32 bit attribute. Fix all callers. Signed-off-by: Jeremy Allison Reviewed-by: Volker Lendecke --- diff --git a/source3/libsmb/cli_smb2_fnum.c b/source3/libsmb/cli_smb2_fnum.c index 097c4fca3a0..f42fd2e7c71 100644 --- a/source3/libsmb/cli_smb2_fnum.c +++ b/source3/libsmb/cli_smb2_fnum.c @@ -2145,14 +2145,13 @@ NTSTATUS cli_smb2_getattrE(struct cli_state *cli, NTSTATUS cli_smb2_getatr(struct cli_state *cli, const char *name, - uint16_t *pattr, + uint32_t *pattr, off_t *size, time_t *write_time) { NTSTATUS status; uint16_t fnum = 0xffff; struct smb2_hnd *ph = NULL; - uint32_t attr = 0; TALLOC_CTX *frame = talloc_stackframe(); if (smbXcli_conn_has_async_calls(cli->conn)) { @@ -2185,7 +2184,7 @@ NTSTATUS cli_smb2_getatr(struct cli_state *cli, } status = cli_smb2_getattrE(cli, fnum, - &attr, + pattr, size, NULL, NULL, @@ -2194,10 +2193,6 @@ NTSTATUS cli_smb2_getatr(struct cli_state *cli, goto fail; } - if (pattr != NULL) { - *pattr = attr; - } - fail: if (fnum != 0xffff) { diff --git a/source3/libsmb/cli_smb2_fnum.h b/source3/libsmb/cli_smb2_fnum.h index db603672014..171e7729d3c 100644 --- a/source3/libsmb/cli_smb2_fnum.h +++ b/source3/libsmb/cli_smb2_fnum.h @@ -173,7 +173,7 @@ NTSTATUS cli_smb2_getattrE(struct cli_state *cli, time_t *write_time); NTSTATUS cli_smb2_getatr(struct cli_state *cli, const char *name, - uint16_t *pattr, + uint32_t *pattr, off_t *size, time_t *write_time); NTSTATUS cli_smb2_qpathinfo2(struct cli_state *cli, diff --git a/source3/libsmb/clifile.c b/source3/libsmb/clifile.c index 9afd431c6cc..72d6e1de52a 100644 --- a/source3/libsmb/clifile.c +++ b/source3/libsmb/clifile.c @@ -4327,11 +4327,19 @@ NTSTATUS cli_getatr(struct cli_state *cli, NTSTATUS status = NT_STATUS_OK; if (smbXcli_conn_protocol(cli->conn) >= PROTOCOL_SMB2_02) { - return cli_smb2_getatr(cli, + uint32_t attr; + status = cli_smb2_getatr(cli, fname, - pattr, + &attr, size, write_time); + if (!NT_STATUS_IS_OK(status)) { + return status; + } + if (pattr != NULL) { + *pattr = attr; + } + return status; } frame = talloc_stackframe();