The branch, master has been updated
       via  8cf78ff55312768d0b454b1d7e0560e04e6296da (commit)
      from  ab4b8c9c0438bc5afca17e3ebf05dde6f98bc0aa (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 8cf78ff55312768d0b454b1d7e0560e04e6296da
Author: Jeremy Allison <j...@samba.org>
Date:   Thu Apr 30 15:26:43 2009 -0700

    Get medieval on our ass about SMB1 file descriptors being 16 bits, not an 
int.
    Convert all uses of cli_open(), cli_nt_createXXX to NTSTATUS versions.
    This is smaller than it looks, it just fixes a lot of old code.
    Next up, ensure all cli_XX functions return NTSTATUS.
    Jeremy.

-----------------------------------------------------------------------

Summary of changes:
 source3/client/client.c         |   38 ++--
 source3/client/clitar.c         |   11 +-
 source3/client/smbspool.c       |    5 +-
 source3/include/client.h        |    2 +-
 source3/include/proto.h         |   72 +++---
 source3/libgpo/gpo_filesync.c   |    6 +-
 source3/libsmb/clientgen.c      |    2 +-
 source3/libsmb/clifile.c        |   63 +++--
 source3/libsmb/clioplock.c      |    7 +-
 source3/libsmb/cliprint.c       |    2 +-
 source3/libsmb/cliquota.c       |   12 +-
 source3/libsmb/clirap.c         |    6 +-
 source3/libsmb/clireadwrite.c   |   12 +-
 source3/libsmb/clisecdesc.c     |    4 +-
 source3/libsmb/libsmb_file.c    |   16 +-
 source3/libsmb/libsmb_xattr.c   |   21 +-
 source3/torture/denytest.c      |   34 ++-
 source3/torture/locktest.c      |   35 ++--
 source3/torture/locktest2.c     |    8 +-
 source3/torture/mangle_test.c   |    8 +-
 source3/torture/masktest.c      |    5 +-
 source3/torture/nbio.c          |   18 +-
 source3/torture/scanner.c       |   22 +-
 source3/torture/torture.c       |  580 ++++++++++++++++-----------------------
 source3/torture/utable.c        |   17 +-
 source3/utils/net_rpc.c         |    7 +-
 source3/utils/net_rpc_printer.c |   31 +-
 source3/utils/smbcacls.c        |   33 +--
 source3/utils/smbcquotas.c      |    4 +-
 29 files changed, 482 insertions(+), 599 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/client/client.c b/source3/client/client.c
index 7dda981..becb066 100644
--- a/source3/client/client.c
+++ b/source3/client/client.c
@@ -535,12 +535,12 @@ static void display_finfo(file_info *finfo, const char 
*dir)
                dir_total += finfo->size;
        } else {
                char *afname = NULL;
-               int fnum;
+               uint16_t fnum;
 
                /* skip if this is . or .. */
                if ( strequal(finfo->name,"..") || strequal(finfo->name,".") )
                        return;
-               /* create absolute filename for cli_nt_create() FIXME */
+               /* create absolute filename for cli_ntcreate() FIXME */
                afname = talloc_asprintf(ctx,
                                        "%s%s%s",
                                        dir,
@@ -554,8 +554,9 @@ static void display_finfo(file_info *finfo, const char *dir)
                d_printf( "MODE:%s\n", attrib_string(finfo->mode));
                d_printf( "SIZE:%.0f\n", (double)finfo->size);
                d_printf( "MTIME:%s", time_to_asc(t));
-               fnum = cli_nt_create(finfo->cli, afname, CREATE_ACCESS_READ);
-               if (fnum == -1) {
+               if (!NT_STATUS_IS_OK(cli_ntcreate(finfo->cli, afname, 0,
+                               CREATE_ACCESS_READ, 0, 
FILE_SHARE_READ|FILE_SHARE_WRITE,
+                               FILE_OPEN, 0x0, 0x0, &fnum))) {
                        DEBUG( 0, ("display_finfo() Failed to open %s: %s\n",
                                afname,
                                cli_errstr( finfo->cli)));
@@ -999,7 +1000,8 @@ static NTSTATUS writefile_sink(char *buf, size_t n, void 
*priv)
 static int do_get(const char *rname, const char *lname_in, bool reget)
 {
        TALLOC_CTX *ctx = talloc_tos();
-       int handle = 0, fnum;
+       int handle = 0;
+       uint16_t fnum;
        bool newhandle = false;
        struct timeval tp_start;
        uint16 attr;
@@ -1028,9 +1030,7 @@ static int do_get(const char *rname, const char 
*lname_in, bool reget)
 
        GetTimeOfDay(&tp_start);
 
-       fnum = cli_open(targetcli, targetname, O_RDONLY, DENY_NONE);
-
-       if (fnum == -1) {
+       if (!NT_STATUS_IS_OK(cli_open(targetcli, targetname, O_RDONLY, 
DENY_NONE, &fnum))) {
                d_printf("%s opening remote file %s\n",cli_errstr(cli),rname);
                return 1;
        }
@@ -1618,7 +1618,7 @@ static int cmd_allinfo(void)
 static int do_put(const char *rname, const char *lname, bool reput)
 {
        TALLOC_CTX *ctx = talloc_tos();
-       int fnum;
+       uint16_t fnum;
        XFILE *f;
        SMB_OFF_T start = 0;
        int rc = 0;
@@ -1636,8 +1636,8 @@ static int do_put(const char *rname, const char *lname, 
bool reput)
        GetTimeOfDay(&tp_start);
 
        if (reput) {
-               fnum = cli_open(targetcli, targetname, O_RDWR|O_CREAT, 
DENY_NONE);
-               if (fnum >= 0) {
+               status = cli_open(targetcli, targetname, O_RDWR|O_CREAT, 
DENY_NONE, &fnum);
+               if (NT_STATUS_IS_OK(status)) {
                        if (!cli_qfileinfo(targetcli, fnum, NULL, &start, NULL, 
NULL, NULL, NULL, NULL) &&
                            !cli_getattrE(targetcli, fnum, NULL, &start, NULL, 
NULL, NULL)) {
                                d_printf("getattrib: %s\n",cli_errstr(cli));
@@ -1645,10 +1645,10 @@ static int do_put(const char *rname, const char *lname, 
bool reput)
                        }
                }
        } else {
-               fnum = cli_open(targetcli, targetname, O_RDWR|O_CREAT|O_TRUNC, 
DENY_NONE);
+               status = cli_open(targetcli, targetname, 
O_RDWR|O_CREAT|O_TRUNC, DENY_NONE, &fnum);
        }
 
-       if (fnum == -1) {
+       if (!NT_STATUS_IS_OK(status)) {
                d_printf("%s opening remote file 
%s\n",cli_errstr(targetcli),rname);
                return 1;
        }
@@ -2207,7 +2207,7 @@ static int cmd_open(void)
        char *buf = NULL;
        char *targetname = NULL;
        struct cli_state *targetcli;
-       int fnum;
+       uint16_t fnum = (uint16_t)-1;
 
        if (!next_token_talloc(ctx, &cmd_ptr,&buf,NULL)) {
                d_printf("open <filename>\n");
@@ -2226,10 +2226,12 @@ static int cmd_open(void)
                return 1;
        }
 
-       fnum = cli_nt_create(targetcli, targetname, 
FILE_READ_DATA|FILE_WRITE_DATA);
-       if (fnum == -1) {
-               fnum = cli_nt_create(targetcli, targetname, FILE_READ_DATA);
-               if (fnum != -1) {
+       if (!NT_STATUS_IS_OK(cli_ntcreate(targetcli, targetname, 0,
+                       FILE_READ_DATA|FILE_WRITE_DATA, 0,
+                       FILE_SHARE_READ|FILE_SHARE_WRITE, FILE_OPEN, 0x0, 0x0, 
&fnum))) {
+               if (NT_STATUS_IS_OK(cli_ntcreate(targetcli, targetname, 0,
+                               FILE_READ_DATA, 0,
+                               FILE_SHARE_READ|FILE_SHARE_WRITE, FILE_OPEN, 
0x0, 0x0, &fnum))) {
                        d_printf("open file %s: for read/write fnum %d\n", 
targetname, fnum);
                } else {
                        d_printf("Failed to open file %s. %s\n", targetname, 
cli_errstr(cli));
diff --git a/source3/client/clitar.c b/source3/client/clitar.c
index fd37576..3cc1a25 100644
--- a/source3/client/clitar.c
+++ b/source3/client/clitar.c
@@ -613,7 +613,7 @@ append one remote file to the tar file
 
 static void do_atar(const char *rname_in,char *lname,file_info *finfo1)
 {
-       int fnum = -1;
+       uint16_t fnum = (uint16_t)-1;
        uint64_t nread=0;
        char ftype;
        file_info2 finfo;
@@ -660,9 +660,7 @@ static void do_atar(const char *rname_in,char 
*lname,file_info *finfo1)
                goto cleanup;
        }
 
-       fnum = cli_open(cli, rname, O_RDONLY, DENY_NONE);
-
-       if (fnum == -1) {
+       if (!NT_STATUS_IS_OK(cli_open(cli, rname, O_RDONLY, DENY_NONE, &fnum))) 
{
                DEBUG(0,("%s opening remote file %s (%s)\n",
                                cli_errstr(cli),rname, client_get_cur_dir()));
                goto cleanup;
@@ -998,13 +996,14 @@ static int skip_file(int skipsize)
 
 static int get_file(file_info2 finfo)
 {
-       int fnum = -1, pos = 0, dsize = 0, bpos = 0;
+       uint16_t fnum;
+       int pos = 0, dsize = 0, bpos = 0;
        uint64_t rsize = 0;
 
        DEBUG(5, ("get_file: file: %s, size %.0f\n", finfo.name, 
(double)finfo.size));
 
        if (ensurepath(finfo.name) &&
-                       (fnum=cli_open(cli, finfo.name, O_RDWR|O_CREAT|O_TRUNC, 
DENY_NONE)) == -1) {
+                       (!NT_STATUS_IS_OK(cli_open(cli, finfo.name, 
O_RDWR|O_CREAT|O_TRUNC, DENY_NONE,&fnum)))) {
                DEBUG(0, ("abandoning restore\n"));
                return(False);
        }
diff --git a/source3/client/smbspool.c b/source3/client/smbspool.c
index a276353..6b099db 100644
--- a/source3/client/smbspool.c
+++ b/source3/client/smbspool.c
@@ -553,7 +553,7 @@ smb_print(struct cli_state * cli,   /* I - SMB connection */
          char *title,          /* I - Title/job name */
          FILE * fp)
 {                              /* I - File to print */
-       int             fnum;   /* File number */
+       uint16_t             fnum;      /* File number */
        int             nbytes, /* Number of bytes read */
                        tbytes; /* Total bytes read */
        char            buffer[8192],   /* Buffer for copy */
@@ -574,8 +574,7 @@ smb_print(struct cli_state * cli,   /* I - SMB connection */
          * Open the printer device...
          */
 
-       fnum = cli_open(cli, title, O_RDWR | O_CREAT | O_TRUNC, DENY_NONE);
-       if (fnum == -1) {
+       if (!NT_STATUS_IS_OK(cli_open(cli, title, O_RDWR | O_CREAT | O_TRUNC, 
DENY_NONE, &fnum))) {
                fprintf(stderr, "ERROR: %s opening remote spool %s\n",
                        cli_errstr(cli), title);
                return (get_exit_code(cli, cli_nt_error(cli)));
diff --git a/source3/include/client.h b/source3/include/client.h
index 6d84f48..6f56468 100644
--- a/source3/include/client.h
+++ b/source3/include/client.h
@@ -259,7 +259,7 @@ struct cli_state {
        bool use_level_II_oplocks; /* should we use level II oplocks? */
 
        /* a oplock break request handler */
-       bool (*oplock_handler)(struct cli_state *cli, int fnum, unsigned char 
level);
+       NTSTATUS (*oplock_handler)(struct cli_state *cli, uint16_t fnum, 
unsigned char level);
 
        bool force_dos_errors;
        bool case_sensitive; /* False by default. */
diff --git a/source3/include/proto.h b/source3/include/proto.h
index 11fd45e..f60fc9d 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -2375,12 +2375,7 @@ struct tevent_req *cli_rmdir_send(TALLOC_CTX *mem_ctx,
                                  const char *dname);
 NTSTATUS cli_rmdir_recv(struct tevent_req *req);
 NTSTATUS cli_rmdir(struct cli_state *cli, const char *dname);
-int cli_nt_delete_on_close(struct cli_state *cli, int fnum, bool flag);
-int cli_nt_create_full(struct cli_state *cli, const char *fname,
-                uint32_t CreatFlags, uint32_t DesiredAccess,
-                uint32_t FileAttributes, uint32_t ShareAccess,
-                uint32_t CreateDisposition, uint32_t CreateOptions,
-                uint8_t SecuityFlags);
+int cli_nt_delete_on_close(struct cli_state *cli, uint16_t fnum, bool flag);
 struct tevent_req *cli_ntcreate_send(TALLOC_CTX *mem_ctx,
                                     struct event_context *ev,
                                     struct cli_state *cli,
@@ -2403,7 +2398,6 @@ NTSTATUS cli_ntcreate(struct cli_state *cli,
                      uint32_t CreateOptions,
                      uint8_t SecurityFlags,
                      uint16_t *pfid);
-int cli_nt_create(struct cli_state *cli, const char *fname, uint32_t 
DesiredAccess);
 uint8_t *smb_bytes_push_str(uint8_t *buf, bool ucs2, const char *str,
                            size_t str_len, size_t *pconverted_size);
 struct tevent_req *cli_open_create(TALLOC_CTX *mem_ctx,
@@ -2414,32 +2408,32 @@ struct tevent_req *cli_open_create(TALLOC_CTX *mem_ctx,
 struct tevent_req *cli_open_send(TALLOC_CTX *mem_ctx, struct event_context *ev,
                                 struct cli_state *cli, const char *fname,
                                 int flags, int share_mode);
-NTSTATUS cli_open_recv(struct tevent_req *req, int *fnum);
-int cli_open(struct cli_state *cli, const char *fname, int flags, int 
share_mode);
+NTSTATUS cli_open_recv(struct tevent_req *req, uint16_t *fnum);
+NTSTATUS cli_open(struct cli_state *cli, const char *fname, int flags, int 
share_mode, uint16_t *pfnum);
 struct tevent_req *cli_close_create(TALLOC_CTX *mem_ctx,
                                    struct event_context *ev,
-                                   struct cli_state *cli, int fnum,
+                                   struct cli_state *cli, uint16_t fnum,
                                    struct tevent_req **psubreq);
 struct tevent_req *cli_close_send(TALLOC_CTX *mem_ctx,
                                  struct event_context *ev,
-                                 struct cli_state *cli, int fnum);
+                                 struct cli_state *cli, uint16_t fnum);
 NTSTATUS cli_close_recv(struct tevent_req *req);
-bool cli_close(struct cli_state *cli, int fnum);
-bool cli_ftruncate(struct cli_state *cli, int fnum, uint64_t size);
-NTSTATUS cli_locktype(struct cli_state *cli, int fnum,
+bool cli_close(struct cli_state *cli, uint16_t fnum);
+bool cli_ftruncate(struct cli_state *cli, uint16_t fnum, uint64_t size);
+NTSTATUS cli_locktype(struct cli_state *cli, uint16_t fnum,
                      uint32_t offset, uint32_t len,
                      int timeout, unsigned char locktype);
-bool cli_lock(struct cli_state *cli, int fnum,
+bool cli_lock(struct cli_state *cli, uint16_t fnum,
              uint32_t offset, uint32_t len, int timeout, enum brl_type 
lock_type);
-bool cli_unlock(struct cli_state *cli, int fnum, uint32_t offset, uint32_t 
len);
-bool cli_lock64(struct cli_state *cli, int fnum,
+bool cli_unlock(struct cli_state *cli, uint16_t fnum, uint32_t offset, 
uint32_t len);
+bool cli_lock64(struct cli_state *cli, uint16_t fnum,
                uint64_t offset, uint64_t len, int timeout, enum brl_type 
lock_type);
-bool cli_unlock64(struct cli_state *cli, int fnum, uint64_t offset, uint64_t 
len);
-bool cli_posix_lock(struct cli_state *cli, int fnum,
+bool cli_unlock64(struct cli_state *cli, uint16_t fnum, uint64_t offset, 
uint64_t len);
+bool cli_posix_lock(struct cli_state *cli, uint16_t fnum,
                        uint64_t offset, uint64_t len,
                        bool wait_lock, enum brl_type lock_type);
-bool cli_posix_unlock(struct cli_state *cli, int fnum, uint64_t offset, 
uint64_t len);
-bool cli_posix_getlock(struct cli_state *cli, int fnum, uint64_t *poffset, 
uint64_t *plen);
+bool cli_posix_unlock(struct cli_state *cli, uint16_t fnum, uint64_t offset, 
uint64_t len);
+bool cli_posix_getlock(struct cli_state *cli, uint16_t fnum, uint64_t 
*poffset, uint64_t *plen);
 bool cli_getattrE(struct cli_state *cli, int fd,
                  uint16_t *attr, SMB_OFF_T *size,
                  time_t *change_time,
@@ -2465,14 +2459,14 @@ NTSTATUS cli_dskattr_recv(struct tevent_req *req, int 
*bsize, int *total,
                          int *avail);
 NTSTATUS cli_dskattr(struct cli_state *cli, int *bsize, int *total, int 
*avail);
 int cli_ctemp(struct cli_state *cli, const char *path, char **tmp_path);
-NTSTATUS cli_raw_ioctl(struct cli_state *cli, int fnum, uint32_t code, 
DATA_BLOB *blob);
+NTSTATUS cli_raw_ioctl(struct cli_state *cli, uint16_t fnum, uint32_t code, 
DATA_BLOB *blob);
 bool cli_set_ea_path(struct cli_state *cli, const char *path, const char 
*ea_name, const char *ea_val, size_t ea_len);
-bool cli_set_ea_fnum(struct cli_state *cli, int fnum, const char *ea_name, 
const char *ea_val, size_t ea_len);
+bool cli_set_ea_fnum(struct cli_state *cli, uint16_t fnum, const char 
*ea_name, const char *ea_val, size_t ea_len);
 bool cli_get_ea_list_path(struct cli_state *cli, const char *path,
                TALLOC_CTX *ctx,
                size_t *pnum_eas,
                struct ea_struct **pea_list);
-bool cli_get_ea_list_fnum(struct cli_state *cli, int fnum,
+bool cli_get_ea_list_fnum(struct cli_state *cli, uint16_t fnum,
                TALLOC_CTX *ctx,
                size_t *pnum_eas,
                struct ea_struct **pea_list);
@@ -2564,9 +2558,9 @@ struct tevent_req *cli_oplock_ack_send(TALLOC_CTX 
*mem_ctx,
                                       struct cli_state *cli,
                                       uint16_t fnum, uint8_t level);
 NTSTATUS cli_oplock_ack_recv(struct tevent_req *req);
-bool cli_oplock_ack(struct cli_state *cli, int fnum, unsigned char level);
+NTSTATUS cli_oplock_ack(struct cli_state *cli, uint16_t fnum, unsigned char 
level);
 void cli_oplock_handler(struct cli_state *cli, 
-                       bool (*handler)(struct cli_state *, int, unsigned 
char));
+                       NTSTATUS (*handler)(struct cli_state *, uint16_t, 
unsigned char));
 
 /* The following definitions come from libsmb/cliprint.c  */
 
@@ -2574,11 +2568,11 @@ int cli_print_queue(struct cli_state *cli,
                    void (*fn)(struct print_job_info *));
 int cli_printjob_del(struct cli_state *cli, int job);
 int cli_spl_open(struct cli_state *cli, const char *fname, int flags, int 
share_mode);
-bool cli_spl_close(struct cli_state *cli, int fnum);
+bool cli_spl_close(struct cli_state *cli, uint16_t fnum);
 
 /* The following definitions come from libsmb/cliquota.c  */
 
-bool cli_get_quota_handle(struct cli_state *cli, int *quota_fnum);
+NTSTATUS cli_get_quota_handle(struct cli_state *cli, uint16_t *quota_fnum);
 void free_ntquota_list(SMB_NTQUOTA_LIST **qt_list);
 bool cli_get_user_quota(struct cli_state *cli, int quota_fnum, 
SMB_NTQUOTA_STRUCT *pqt);
 bool cli_set_user_quota(struct cli_state *cli, int quota_fnum, 
SMB_NTQUOTA_STRUCT *pqt);
@@ -2626,8 +2620,8 @@ bool cli_qpathinfo_streams(struct cli_state *cli, const 
char *fname,
                           TALLOC_CTX *mem_ctx,
                           unsigned int *pnum_streams,
                           struct stream_struct **pstreams);
-bool cli_qfilename(struct cli_state *cli, int fnum, char *name, size_t 
namelen);
-bool cli_qfileinfo(struct cli_state *cli, int fnum,
+bool cli_qfilename(struct cli_state *cli, uint16_t fnum, char *name, size_t 
namelen);
+bool cli_qfileinfo(struct cli_state *cli, uint16_t fnum,
                   uint16 *mode, SMB_OFF_T *size,
                   struct timespec *create_time,
                    struct timespec *access_time,
@@ -2636,7 +2630,7 @@ bool cli_qfileinfo(struct cli_state *cli, int fnum,
                    SMB_INO_T *ino);
 bool cli_qpathinfo_basic( struct cli_state *cli, const char *name,
                           SMB_STRUCT_STAT *sbuf, uint32 *attributes );
-bool cli_qfileinfo_test(struct cli_state *cli, int fnum, int level, char 
**poutdata, uint32 *poutlen);
+bool cli_qfileinfo_test(struct cli_state *cli, uint16_t fnum, int level, char 
**poutdata, uint32 *poutlen);
 NTSTATUS cli_qpathinfo_alt_name(struct cli_state *cli, const char *fname, 
fstring alt_name);
 
 /* The following definitions come from libsmb/clirap2.c  */
@@ -2693,12 +2687,12 @@ int cli_NetConnectionEnum(struct cli_state *cli, const 
char *qualifier,
 
 struct tevent_req *cli_read_andx_create(TALLOC_CTX *mem_ctx,
                                        struct event_context *ev,
-                                       struct cli_state *cli, int fnum,
+                                       struct cli_state *cli, uint16_t fnum,
                                        off_t offset, size_t size,
                                        struct tevent_req **psmbreq);
 struct tevent_req *cli_read_andx_send(TALLOC_CTX *mem_ctx,
                                      struct event_context *ev,
-                                     struct cli_state *cli, int fnum,
+                                     struct cli_state *cli, uint16_t fnum,
                                      off_t offset, size_t size);
 NTSTATUS cli_read_andx_recv(struct tevent_req *req, ssize_t *received,
                            uint8_t **rcvbuf);
@@ -2715,14 +2709,14 @@ NTSTATUS cli_pull(struct cli_state *cli, uint16_t fnum,
                  off_t start_offset, SMB_OFF_T size, size_t window_size,
                  NTSTATUS (*sink)(char *buf, size_t n, void *priv),
                  void *priv, SMB_OFF_T *received);
-ssize_t cli_read(struct cli_state *cli, int fnum, char *buf,
+ssize_t cli_read(struct cli_state *cli, uint16_t fnum, char *buf,
                 off_t offset, size_t size);
-ssize_t cli_readraw(struct cli_state *cli, int fnum, char *buf, off_t offset, 
size_t size);
+ssize_t cli_readraw(struct cli_state *cli, uint16_t fnum, char *buf, off_t 
offset, size_t size);
 ssize_t cli_write(struct cli_state *cli,
-                int fnum, uint16 write_mode,
+                uint16_t fnum, uint16 write_mode,
                 const char *buf, off_t offset, size_t size);
 ssize_t cli_smbwrite(struct cli_state *cli,
-                    int fnum, char *buf, off_t offset, size_t size1);
+                    uint16_t fnum, char *buf, off_t offset, size_t size1);
 struct tevent_req *cli_write_andx_create(TALLOC_CTX *mem_ctx,
                                         struct event_context *ev,
                                         struct cli_state *cli, uint16_t fnum,
@@ -2753,9 +2747,9 @@ NTSTATUS cli_push(struct cli_state *cli, uint16_t fnum, 
uint16_t mode,
 
 /* The following definitions come from libsmb/clisecdesc.c  */
 
-SEC_DESC *cli_query_secdesc(struct cli_state *cli, int fnum, 
+SEC_DESC *cli_query_secdesc(struct cli_state *cli, uint16_t fnum, 
                            TALLOC_CTX *mem_ctx);
-bool cli_set_secdesc(struct cli_state *cli, int fnum, SEC_DESC *sd);
+bool cli_set_secdesc(struct cli_state *cli, uint16_t fnum, SEC_DESC *sd);
 
 /* The following definitions come from libsmb/clispnego.c  */
 
diff --git a/source3/libgpo/gpo_filesync.c b/source3/libgpo/gpo_filesync.c
index 6d64d7b..d4b623a 100644
--- a/source3/libgpo/gpo_filesync.c
+++ b/source3/libgpo/gpo_filesync.c
@@ -39,15 +39,15 @@ NTSTATUS gpo_copy_file(TALLOC_CTX *mem_ctx,
                       const char *unix_path)
 {
        NTSTATUS result;
-       int fnum;
+       uint16_t fnum;
        int fd = 0;
        char *data = NULL;
        static int io_bufsize = 64512;
        int read_size = io_bufsize;
        off_t nread = 0;
 
-       if ((fnum = cli_open(cli, nt_path, O_RDONLY, DENY_NONE)) == -1) {
-               result = NT_STATUS_NO_SUCH_FILE;
+       result = cli_open(cli, nt_path, O_RDONLY, DENY_NONE, &fnum);
+       if (!NT_STATUS_IS_OK(result)) {
                goto out;
        }
 
diff --git a/source3/libsmb/clientgen.c b/source3/libsmb/clientgen.c
index 45addc2..b06a6fa 100644
--- a/source3/libsmb/clientgen.c
+++ b/source3/libsmb/clientgen.c
@@ -234,7 +234,7 @@ bool cli_receive_smb(struct cli_state *cli)
                        if (cli->oplock_handler) {
                                int fnum = SVAL(cli->inbuf,smb_vwv2);
                                unsigned char level = 
CVAL(cli->inbuf,smb_vwv3+1);
-                               if (!cli->oplock_handler(cli, fnum, level)) {
+                               if (!NT_STATUS_IS_OK(cli->oplock_handler(cli, 
fnum, level))) {
                                        return false;
                                }
                        }
diff --git a/source3/libsmb/clifile.c b/source3/libsmb/clifile.c
index 54c5947..0573041 100644
--- a/source3/libsmb/clifile.c
+++ b/source3/libsmb/clifile.c
@@ -1083,7 +1083,7 @@ NTSTATUS cli_rmdir(struct cli_state *cli, const char 
*dname)
  Set or clear the delete on close flag.
 ****************************************************************************/
 
-int cli_nt_delete_on_close(struct cli_state *cli, int fnum, bool flag)
+int cli_nt_delete_on_close(struct cli_state *cli, uint16_t fnum, bool flag)
 {
        unsigned int data_len = 1;
        unsigned int param_len = 6;
@@ -1125,6 +1125,7 @@ int cli_nt_delete_on_close(struct cli_state *cli, int 
fnum, bool flag)
  Used in smbtorture.
 ****************************************************************************/
 
+#if 0
 int cli_nt_create_full(struct cli_state *cli, const char *fname,
                       uint32_t CreatFlags, uint32_t DesiredAccess,
                       uint32_t FileAttributes, uint32_t ShareAccess,
@@ -1181,6 +1182,7 @@ int cli_nt_create_full(struct cli_state *cli, const char 
*fname,
 
        return SVAL(cli->inbuf,smb_vwv2 + 1);
 }
+#endif
 
 struct cli_ntcreate_state {
        uint16_t vwv[24];
@@ -1344,6 +1346,7 @@ NTSTATUS cli_ntcreate(struct cli_state *cli,
        return status;
 }
 
+#if 0
 /****************************************************************************
  Open a file.
 ****************************************************************************/
@@ -1353,6 +1356,7 @@ int cli_nt_create(struct cli_state *cli, const char 
*fname, uint32_t DesiredAcce
        return cli_nt_create_full(cli, fname, 0, DesiredAccess, 0,
                                FILE_SHARE_READ|FILE_SHARE_WRITE, FILE_OPEN, 
0x0, 0x0);
 }
+#endif
 
 uint8_t *smb_bytes_push_str(uint8_t *buf, bool ucs2,
                            const char *str, size_t str_len,
@@ -1411,7 +1415,7 @@ uint8_t *smb_bytes_push_str(uint8_t *buf, bool ucs2,
 
 struct cli_open_state {
        uint16_t vwv[15];
-       int fnum;
+       uint16_t fnum;
        struct iovec bytes;
 };
 
@@ -1544,7 +1548,7 @@ static void cli_open_done(struct tevent_req *subreq)
        tevent_req_done(req);
 }
 
-NTSTATUS cli_open_recv(struct tevent_req *req, int *fnum)
+NTSTATUS cli_open_recv(struct tevent_req *req, uint16_t *pfnum)
 {
        struct cli_open_state *state = tevent_req_data(
                req, struct cli_open_state);
@@ -1553,18 +1557,17 @@ NTSTATUS cli_open_recv(struct tevent_req *req, int 
*fnum)
        if (tevent_req_is_nterror(req, &status)) {
                return status;
        }
-       *fnum = state->fnum;
+       *pfnum = state->fnum;
        return NT_STATUS_OK;
 }
 
-int cli_open(struct cli_state *cli, const char *fname, int flags,
-            int share_mode)
+NTSTATUS cli_open(struct cli_state *cli, const char *fname, int flags,
+            int share_mode, uint16_t *pfnum)
 {
        TALLOC_CTX *frame = talloc_stackframe();
        struct event_context *ev;
        struct tevent_req *req;
        NTSTATUS status = NT_STATUS_OK;
-       int result = -1;
 
        if (cli_has_async_calls(cli)) {
                /*
@@ -1591,13 +1594,13 @@ int cli_open(struct cli_state *cli, const char *fname, 
int flags,
                goto fail;
        }
 
-       cli_open_recv(req, &result);
+       status = cli_open_recv(req, pfnum);
  fail:
        TALLOC_FREE(frame);


-- 
Samba Shared Repository

Reply via email to