s3: libsmb: Make cli_smb2_dskattr() a 64-bit interface.
authorJeremy Allison <jra@samba.org>
Wed, 4 Jun 2014 21:19:30 +0000 (14:19 -0700)
committerJeremy Allison <jra@samba.org>
Sat, 7 Jun 2014 01:15:14 +0000 (03:15 +0200)
Remove the fallback call from cli_dskattr() (now it's
not called from external client code).

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Volker Lendecke <Volker.Lendecke@SerNet.DE>
source3/libsmb/cli_smb2_fnum.c
source3/libsmb/cli_smb2_fnum.h
source3/libsmb/clifile.c

index 8eb776a13240d4f9139f18b56ce60ba429975628..950398a5cb9582f58640c35c3780dc312fb70881 100644 (file)
@@ -1411,7 +1411,7 @@ NTSTATUS cli_smb2_setattrE(struct cli_state *cli,
  Synchronous only.
 ***************************************************************/
 
-NTSTATUS cli_smb2_dskattr(struct cli_state *cli, int *bsize, int *total, int *avail)
+NTSTATUS cli_smb2_dskattr(struct cli_state *cli, uint64_t *bsize, uint64_t *total, uint64_t *avail)
 {
        NTSTATUS status;
        uint16_t fnum = 0xffff;
@@ -1492,13 +1492,13 @@ NTSTATUS cli_smb2_dskattr(struct cli_state *cli, int *bsize, int *total, int *av
        bytes_per_sector = IVAL(outbuf.data, 20);
 
        if (bsize) {
-               *bsize = (int)(sectors_per_unit * bytes_per_sector);
+               *bsize = (uint64_t)sectors_per_unit * (uint64_t)bytes_per_sector;
        }
        if (total) {
-               *total = (int)total_size;
+               *total = total_size;
        }
        if (avail) {
-               *avail = (int)size_free;
+               *avail = size_free;
        }
 
        status = NT_STATUS_OK;
index 61a0f6851eeebfed5f3e5dab2d2d1a1734879e24..a5ed5a0072b3a7c67bcee8a67633a33a9fed96ad 100644 (file)
@@ -100,9 +100,9 @@ NTSTATUS cli_smb2_setattrE(struct cli_state *cli,
                         time_t access_time,
                         time_t write_time);
 NTSTATUS cli_smb2_dskattr(struct cli_state *cli,
-                       int *bsize,
-                       int *total,
-                       int *avail);
+                       uint64_t *bsize,
+                       uint64_t *total,
+                       uint64_t *avail);
 NTSTATUS cli_smb2_query_security_descriptor(struct cli_state *cli,
                        uint16_t fnum,
                        uint32_t sec_info,
index 8bb1512f7875e6d48a9e4ddcd2568fd7e6706808..18ed5297b712af6dda622fe6b71383668245cba3 100644 (file)
@@ -4094,10 +4094,6 @@ NTSTATUS cli_dskattr(struct cli_state *cli, int *bsize, int *total, int *avail)
        struct tevent_req *req = NULL;
        NTSTATUS status = NT_STATUS_OK;
 
-       if (smbXcli_conn_protocol(cli->conn) >= PROTOCOL_SMB2_02) {
-               return cli_smb2_dskattr(cli, bsize, total, avail);
-       }
-
        frame = talloc_stackframe();
 
        if (smbXcli_conn_has_async_calls(cli->conn)) {
@@ -4138,11 +4134,11 @@ NTSTATUS cli_disk_size(struct cli_state *cli, uint64_t *bsize, uint64_t *total,
        NTSTATUS status;
 
        if (smbXcli_conn_protocol(cli->conn) >= PROTOCOL_SMB2_02) {
-               status = cli_smb2_dskattr(cli, &old_bsize, &old_total, &old_avail);
-       } else {
-               status = cli_dskattr(cli, &old_bsize, &old_total, &old_avail);
+               return cli_smb2_dskattr(cli, bsize, total, avail);
        }
 
+       /* Old SMB1 core protocol fallback. */
+       status = cli_dskattr(cli, &old_bsize, &old_total, &old_avail);
        if (!NT_STATUS_IS_OK(status)) {
                return status;
        }