From: Jeremy Allison Date: Wed, 3 Jun 2020 20:00:56 +0000 (-0700) Subject: s3: libsmb: Change cli_getattrE() and async versions to return a 32-bit attribute. X-Git-Tag: ldb-2.2.0~210 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e2726bed8d9e020174401503124c7a2ae309866e;p=thirdparty%2Fsamba.git s3: libsmb: Change cli_getattrE() and async versions to return a 32-bit attribute. Fix all callers. Signed-off-by: Jeremy Allison Reviewed-by: Volker Lendecke --- diff --git a/source3/client/client.c b/source3/client/client.c index fe6a06c9cbd..0c20839e27d 100644 --- a/source3/client/client.c +++ b/source3/client/client.c @@ -1186,8 +1186,7 @@ static int do_get(const char *rname, const char *lname_in, bool reget) status = cli_qfileinfo_basic(targetcli, fnum, &attr, &size, NULL, NULL, NULL, NULL, NULL); if (!NT_STATUS_IS_OK(status)) { - uint16_t sattr = 0; - status = cli_getattrE(targetcli, fnum, &sattr, &size, NULL, NULL, + status = cli_getattrE(targetcli, fnum, &attr, &size, NULL, NULL, NULL); if(!NT_STATUS_IS_OK(status)) { d_printf("getattrib: %s\n", nt_errstr(status)); @@ -1196,7 +1195,6 @@ static int do_get(const char *rname, const char *lname_in, bool reget) } return 1; } - attr = sattr; } DEBUG(1,("getting file %s of size %.0f as %s ", diff --git a/source3/libsmb/clifile.c b/source3/libsmb/clifile.c index 72d6e1de52a..868b8f357c1 100644 --- a/source3/libsmb/clifile.c +++ b/source3/libsmb/clifile.c @@ -4050,7 +4050,7 @@ static void cli_getattrE_done(struct tevent_req *subreq); struct cli_getattrE_state { uint16_t vwv[1]; int zone_offset; - uint16_t attr; + uint32_t attr; off_t size; time_t change_time; time_t access_time; @@ -4110,7 +4110,7 @@ static void cli_getattrE_done(struct tevent_req *subreq) } NTSTATUS cli_getattrE_recv(struct tevent_req *req, - uint16_t *pattr, + uint32_t *pattr, off_t *size, time_t *change_time, time_t *access_time, @@ -4143,7 +4143,7 @@ NTSTATUS cli_getattrE_recv(struct tevent_req *req, NTSTATUS cli_getattrE(struct cli_state *cli, uint16_t fnum, - uint16_t *pattr, + uint32_t *pattr, off_t *size, time_t *change_time, time_t *access_time, @@ -4155,21 +4155,13 @@ NTSTATUS cli_getattrE(struct cli_state *cli, NTSTATUS status = NT_STATUS_OK; if (smbXcli_conn_protocol(cli->conn) >= PROTOCOL_SMB2_02) { - uint32_t attr = 0; - status = cli_smb2_getattrE(cli, + return cli_smb2_getattrE(cli, fnum, - &attr, + pattr, size, change_time, access_time, write_time); - if (!NT_STATUS_IS_OK(status)) { - return status; - } - if (pattr != NULL) { - *pattr = attr; - } - return status; } frame = talloc_stackframe(); diff --git a/source3/libsmb/libsmb_stat.c b/source3/libsmb/libsmb_stat.c index 70023fa4c23..92b98e9b3f7 100644 --- a/source3/libsmb/libsmb_stat.c +++ b/source3/libsmb/libsmb_stat.c @@ -299,9 +299,8 @@ SMBC_fstat_ctx(SMBCCTX *context, &change_time_ts, &ino))) { time_t change_time, access_time, write_time; - uint16_t sattr = 0; - if (!NT_STATUS_IS_OK(cli_getattrE(targetcli, file->cli_fd, &sattr, &size, + if (!NT_STATUS_IS_OK(cli_getattrE(targetcli, file->cli_fd, &attr, &size, &change_time, &access_time, &write_time))) { errno = EINVAL; TALLOC_FREE(frame); @@ -310,7 +309,6 @@ SMBC_fstat_ctx(SMBCCTX *context, change_time_ts = convert_time_t_to_timespec(change_time); access_time_ts = convert_time_t_to_timespec(access_time); write_time_ts = convert_time_t_to_timespec(write_time); - attr = sattr; } setup_stat(st, diff --git a/source3/libsmb/proto.h b/source3/libsmb/proto.h index 40f8433a6e1..e4fb3de671e 100644 --- a/source3/libsmb/proto.h +++ b/source3/libsmb/proto.h @@ -518,14 +518,14 @@ struct tevent_req *cli_getattrE_send(TALLOC_CTX *mem_ctx, struct cli_state *cli, uint16_t fnum); NTSTATUS cli_getattrE_recv(struct tevent_req *req, - uint16_t *pattr, + uint32_t *pattr, off_t *size, time_t *change_time, time_t *access_time, time_t *write_time); NTSTATUS cli_getattrE(struct cli_state *cli, uint16_t fnum, - uint16_t *pattr, + uint32_t *pattr, off_t *size, time_t *change_time, time_t *access_time, diff --git a/source3/utils/net_rpc_printer.c b/source3/utils/net_rpc_printer.c index 9eb7554dd78..77149a681c8 100644 --- a/source3/utils/net_rpc_printer.c +++ b/source3/utils/net_rpc_printer.c @@ -165,7 +165,7 @@ NTSTATUS net_copy_fileattr(struct net_context *c, uint16_t fnum_src = 0; uint16_t fnum_dst = 0; struct security_descriptor *sd = NULL; - uint16_t attr; + uint32_t attr; time_t f_atime, f_ctime, f_mtime; if (!copy_timestamps && !copy_acls && !copy_attrs)