The branch, master has been updated
       via  8693a4f s3:lib: split things into a conn_tdb.h
       via  5a12293 s3:libsmb: fix the talloc parent of clistr_pull_talloc() in 
cli_notify_done()
       via  7ef4ae4 s3:libsmb: change cli_sesssetup_blob_* to use uint8_t 
instead of char for inbuf
       via  2b5d4d4 s3:libsmb: use inhdr instead of inbuf in tree connect 
related functions
       via  ae627a5 s3:libsmb: use inhdr instead of inbuf in session setup 
related functions
       via  a868a51 s3:libsmb: remove unused 'inbuf' variable
       via  324c51c s3:libsmb: don't require a pinbuf in cli_smb_recv() to keep 
the memory
       via  cd99e61 s4:torture/locktest: fix compiler warning
      from  5cc86fd s3: remove dependency on automake for "make everything"

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


- Log -----------------------------------------------------------------
commit 8693a4fff95f2fa1f9c3b93429101c3b3d22218f
Author: Stefan Metzmacher <me...@samba.org>
Date:   Mon Jun 4 15:32:28 2012 +0200

    s3:lib: split things into a conn_tdb.h
    
    metze
    
    Autobuild-User: Stefan Metzmacher <me...@samba.org>
    Autobuild-Date: Tue Jun  5 19:28:35 CEST 2012 on sn-devel-104

commit 5a122931ede833484d9c47d7a9b5434e85b5c8d7
Author: Stefan Metzmacher <me...@samba.org>
Date:   Mon Jun 4 18:30:11 2012 +0200

    s3:libsmb: fix the talloc parent of clistr_pull_talloc() in 
cli_notify_done()
    
    metze

commit 7ef4ae42fee5c672afab5af801705fea9a575051
Author: Stefan Metzmacher <me...@samba.org>
Date:   Mon Jun 4 16:40:42 2012 +0200

    s3:libsmb: change cli_sesssetup_blob_* to use uint8_t instead of char for 
inbuf
    
    metze

commit 2b5d4d4267fe00578124c076cd1c7d0038765fa1
Author: Stefan Metzmacher <me...@samba.org>
Date:   Mon Jun 4 16:26:27 2012 +0200

    s3:libsmb: use inhdr instead of inbuf in tree connect related functions
    
    metze

commit ae627a5da8147d63739bd5645a0657ee00c51c20
Author: Stefan Metzmacher <me...@samba.org>
Date:   Mon Jun 4 16:26:27 2012 +0200

    s3:libsmb: use inhdr instead of inbuf in session setup related functions
    
    metze

commit a868a51eca659c3002ce23d2ea0708841f1f4772
Author: Stefan Metzmacher <me...@samba.org>
Date:   Mon Jun 4 15:59:42 2012 +0200

    s3:libsmb: remove unused 'inbuf' variable
    
    metze

commit 324c51c25b064d5a6270274472779d260f913fe6
Author: Stefan Metzmacher <me...@samba.org>
Date:   Mon Jun 4 15:53:52 2012 +0200

    s3:libsmb: don't require a pinbuf in cli_smb_recv() to keep the memory
    
    metze

commit cd99e612022ec8607c7a2e85f0835621eb337b7b
Author: Stefan Metzmacher <me...@samba.org>
Date:   Mon May 28 15:25:24 2012 +0200

    s4:torture/locktest: fix compiler warning
    
    metze

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

Summary of changes:
 source3/include/proto.h                   |   19 ------
 source3/include/smb.h                     |   25 --------
 source3/lib/conn_tdb.c                    |    1 +
 source3/lib/conn_tdb.h                    |   62 +++++++++++++++++++
 source3/libsmb/async_smb.c                |    5 ++
 source3/libsmb/cliconnect.c               |   94 +++++++++++++++--------------
 source3/libsmb/clientgen.c                |    3 +-
 source3/libsmb/clifile.c                  |   20 ++----
 source3/libsmb/climessage.c               |    3 +-
 source3/libsmb/clioplock.c                |    3 +-
 source3/libsmb/clireadwrite.c             |    3 +-
 source3/rpc_server/srvsvc/srv_srvsvc_nt.c |    1 +
 source3/smbd/connection.c                 |    1 +
 source3/smbd/server.c                     |    1 +
 source3/smbd/sesssetup.c                  |    1 +
 source3/utils/net_serverid.c              |    1 +
 source3/utils/net_status.c                |    1 +
 source3/utils/status.c                    |    1 +
 source3/web/statuspage.c                  |    1 +
 source4/torture/locktest.c                |    2 +-
 20 files changed, 136 insertions(+), 112 deletions(-)
 create mode 100644 source3/lib/conn_tdb.h


Changeset truncated at 500 lines:

diff --git a/source3/include/proto.h b/source3/include/proto.h
index b8a2409..b5a66b5 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -87,25 +87,6 @@ size_t align_string(const void *base_ptr, const char *p, int 
flags);
 size_t dos_PutUniCode(char *dst,const char *src, size_t len, bool 
null_terminate);
 int rpcstr_push_talloc(TALLOC_CTX *ctx, smb_ucs2_t **dest, const char *src);
 
-/* The following definitions come from lib/conn_tdb.c  */
-
-struct db_record *connections_fetch_entry(TALLOC_CTX *mem_ctx,
-                                         connection_struct *conn,
-                                         const char *name);
-int connections_traverse(int (*fn)(struct db_record *rec,
-                                  void *private_data),
-                        void *private_data);
-int connections_forall(int (*fn)(struct db_record *rec,
-                                const struct connections_key *key,
-                                const struct connections_data *data,
-                                void *private_data),
-                      void *private_data);
-int connections_forall_read(int (*fn)(const struct connections_key *key,
-                                     const struct connections_data *data,
-                                     void *private_data),
-                           void *private_data);
-bool connections_init(bool rw);
-
 /* The following definitions come from lib/dmallocmsg.c  */
 
 void register_dmalloc_msgs(struct messaging_context *msg_ctx);
diff --git a/source3/include/smb.h b/source3/include/smb.h
index 245ff7b..9a63d82 100644
--- a/source3/include/smb.h
+++ b/source3/include/smb.h
@@ -564,31 +564,6 @@ Offset  Data                       length.
 #define NT_HASH_LEN 16
 #define LM_HASH_LEN 16
 
-/* key and data in the connections database - used in smbstatus and smbd */
-struct connections_key {
-       struct server_id pid;
-       int cnum;
-       fstring name;
-};
-
-struct connections_data {
-       int magic;
-       struct server_id pid;
-       int cnum;
-       uid_t uid;
-       gid_t gid;
-       char servicename[FSTRING_LEN];
-       char addr[24];
-       char machine[FSTRING_LEN];
-       time_t start;
-
-       /*
-        * This field used to hold the msg_flags. For compatibility reasons,
-        * keep the data structure in the tdb file the same.
-        */
-       uint32 unused_compatitibility_field;
-};
-
 /* offsets into message for common items */
 #define smb_com                (NBT_HDR_SIZE+HDR_COM)
 #define smb_rcls       (NBT_HDR_SIZE+HDR_RCLS)
diff --git a/source3/lib/conn_tdb.c b/source3/lib/conn_tdb.c
index 9b0a07a..776f53c 100644
--- a/source3/lib/conn_tdb.c
+++ b/source3/lib/conn_tdb.c
@@ -23,6 +23,7 @@
 #include "dbwrap/dbwrap.h"
 #include "dbwrap/dbwrap_open.h"
 #include "messages.h"
+#include "lib/conn_tdb.h"
 
 static struct db_context *connections_db_ctx(bool rw)
 {
diff --git a/source3/lib/conn_tdb.h b/source3/lib/conn_tdb.h
new file mode 100644
index 0000000..ee4befe
--- /dev/null
+++ b/source3/lib/conn_tdb.h
@@ -0,0 +1,62 @@
+/*
+   Unix SMB/CIFS implementation.
+   Low-level connections.tdb access functions
+   Copyright (C) Volker Lendecke 2007
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+/* key and data in the connections database - used in smbstatus and smbd */
+struct connections_key {
+       struct server_id pid;
+       int cnum;
+       fstring name;
+};
+
+struct connections_data {
+       int magic;
+       struct server_id pid;
+       int cnum;
+       uid_t uid;
+       gid_t gid;
+       char servicename[FSTRING_LEN];
+       char addr[24];
+       char machine[FSTRING_LEN];
+       time_t start;
+
+       /*
+        * This field used to hold the msg_flags. For compatibility reasons,
+        * keep the data structure in the tdb file the same.
+        */
+       uint32 unused_compatitibility_field;
+};
+
+/* The following definitions come from lib/conn_tdb.c  */
+
+struct db_record *connections_fetch_entry(TALLOC_CTX *mem_ctx,
+                                         connection_struct *conn,
+                                         const char *name);
+int connections_traverse(int (*fn)(struct db_record *rec,
+                                  void *private_data),
+                        void *private_data);
+int connections_forall(int (*fn)(struct db_record *rec,
+                                const struct connections_key *key,
+                                const struct connections_data *data,
+                                void *private_data),
+                      void *private_data);
+int connections_forall_read(int (*fn)(const struct connections_key *key,
+                                     const struct connections_data *data,
+                                     void *private_data),
+                           void *private_data);
+bool connections_init(bool rw);
diff --git a/source3/libsmb/async_smb.c b/source3/libsmb/async_smb.c
index e30435a..c2986e2 100644
--- a/source3/libsmb/async_smb.c
+++ b/source3/libsmb/async_smb.c
@@ -275,6 +275,11 @@ NTSTATUS cli_smb_recv(struct tevent_req *req,
                } else {
                        *pinbuf = inbuf;
                }
+       } else if (mem_ctx != NULL) {
+               if (talloc_reference_count(inbuf) == 0) {
+                       (void)talloc_move(mem_ctx, &inbuf);
+                       TALLOC_FREE(recv_iov);
+               }
        }
 
        return status;
diff --git a/source3/libsmb/cliconnect.c b/source3/libsmb/cliconnect.c
index 0858be9..df8c6fc 100644
--- a/source3/libsmb/cliconnect.c
+++ b/source3/libsmb/cliconnect.c
@@ -46,15 +46,15 @@
 *******************************************************/
 
 static NTSTATUS smb_bytes_talloc_string(TALLOC_CTX *mem_ctx,
-                                       char *inbuf,
+                                       const uint8_t *hdr,
                                        char **dest,
                                        uint8_t *src,
                                        size_t srclen,
                                        ssize_t *destlen)
 {
        *destlen = clistr_pull_talloc(mem_ctx,
-                               inbuf,
-                               SVAL(inbuf, smb_flg2),
+                               (const char *)hdr,
+                               SVAL(hdr, HDR_FLG2),
                                dest,
                                (char *)src,
                                srclen,
@@ -232,7 +232,7 @@ static void cli_session_setup_lanman2_done(struct 
tevent_req *subreq)
        struct cli_state *cli = state->cli;
        uint32_t num_bytes;
        uint8_t *in;
-       char *inbuf;
+       uint8_t *inhdr;
        uint8_t *bytes;
        uint8_t *p;
        NTSTATUS status;
@@ -248,14 +248,14 @@ static void cli_session_setup_lanman2_done(struct 
tevent_req *subreq)
                return;
        }
 
-       inbuf = (char *)in;
+       inhdr = in + NBT_HDR_SIZE;
        p = bytes;
 
-       cli_state_set_uid(state->cli, SVAL(inbuf, smb_uid));
+       cli_state_set_uid(state->cli, SVAL(inhdr, HDR_UID));
        cli->is_guestlogin = ((SVAL(vwv+2, 0) & 1) != 0);
 
        status = smb_bytes_talloc_string(cli,
-                                       inbuf,
+                                       inhdr,
                                        &cli->server_os,
                                        p,
                                        bytes+num_bytes-p,
@@ -268,7 +268,7 @@ static void cli_session_setup_lanman2_done(struct 
tevent_req *subreq)
        p += ret;
 
        status = smb_bytes_talloc_string(cli,
-                                       inbuf,
+                                       inhdr,
                                        &cli->server_type,
                                        p,
                                        bytes+num_bytes-p,
@@ -281,7 +281,7 @@ static void cli_session_setup_lanman2_done(struct 
tevent_req *subreq)
        p += ret;
 
        status = smb_bytes_talloc_string(cli,
-                                       inbuf,
+                                       inhdr,
                                        &cli->server_domain,
                                        p,
                                        bytes+num_bytes-p,
@@ -470,7 +470,7 @@ static void cli_session_setup_guest_done(struct tevent_req 
*subreq)
        struct cli_state *cli = state->cli;
        uint32_t num_bytes;
        uint8_t *in;
-       char *inbuf;
+       uint8_t *inhdr;
        uint8_t *bytes;
        uint8_t *p;
        NTSTATUS status;
@@ -486,14 +486,14 @@ static void cli_session_setup_guest_done(struct 
tevent_req *subreq)
                return;
        }
 
-       inbuf = (char *)in;
+       inhdr = in + NBT_HDR_SIZE;
        p = bytes;
 
-       cli_state_set_uid(state->cli, SVAL(inbuf, smb_uid));
+       cli_state_set_uid(state->cli, SVAL(inhdr, HDR_UID));
        cli->is_guestlogin = ((SVAL(vwv+2, 0) & 1) != 0);
 
        status = smb_bytes_talloc_string(cli,
-                                       inbuf,
+                                       inhdr,
                                        &cli->server_os,
                                        p,
                                        bytes+num_bytes-p,
@@ -506,7 +506,7 @@ static void cli_session_setup_guest_done(struct tevent_req 
*subreq)
        p += ret;
 
        status = smb_bytes_talloc_string(cli,
-                                       inbuf,
+                                       inhdr,
                                        &cli->server_type,
                                        p,
                                        bytes+num_bytes-p,
@@ -519,7 +519,7 @@ static void cli_session_setup_guest_done(struct tevent_req 
*subreq)
        p += ret;
 
        status = smb_bytes_talloc_string(cli,
-                                       inbuf,
+                                       inhdr,
                                        &cli->server_domain,
                                        p,
                                        bytes+num_bytes-p,
@@ -674,7 +674,7 @@ static void cli_session_setup_plain_done(struct tevent_req 
*subreq)
        struct cli_state *cli = state->cli;
        uint32_t num_bytes;
        uint8_t *in;
-       char *inbuf;
+       uint8_t *inhdr;
        uint8_t *bytes;
        uint8_t *p;
        NTSTATUS status;
@@ -689,14 +689,14 @@ static void cli_session_setup_plain_done(struct 
tevent_req *subreq)
                return;
        }
 
-       inbuf = (char *)in;
+       inhdr = in + NBT_HDR_SIZE;
        p = bytes;
 
-       cli_state_set_uid(state->cli, SVAL(inbuf, smb_uid));
+       cli_state_set_uid(state->cli, SVAL(inhdr, HDR_UID));
        cli->is_guestlogin = ((SVAL(vwv+2, 0) & 1) != 0);
 
        status = smb_bytes_talloc_string(cli,
-                                       inbuf,
+                                       inhdr,
                                        &cli->server_os,
                                        p,
                                        bytes+num_bytes-p,
@@ -709,7 +709,7 @@ static void cli_session_setup_plain_done(struct tevent_req 
*subreq)
        p += ret;
 
        status = smb_bytes_talloc_string(cli,
-                                       inbuf,
+                                       inhdr,
                                        &cli->server_type,
                                        p,
                                        bytes+num_bytes-p,
@@ -722,7 +722,7 @@ static void cli_session_setup_plain_done(struct tevent_req 
*subreq)
        p += ret;
 
        status = smb_bytes_talloc_string(cli,
-                                       inbuf,
+                                       inhdr,
                                        &cli->server_domain,
                                        p,
                                        bytes+num_bytes-p,
@@ -1024,7 +1024,7 @@ static void cli_session_setup_nt1_done(struct tevent_req 
*subreq)
        struct cli_state *cli = state->cli;
        uint32_t num_bytes;
        uint8_t *in;
-       char *inbuf;
+       uint8_t *inhdr;
        uint8_t *bytes;
        uint8_t *p;
        NTSTATUS status;
@@ -1040,14 +1040,14 @@ static void cli_session_setup_nt1_done(struct 
tevent_req *subreq)
                return;
        }
 
-       inbuf = (char *)in;
+       inhdr = in + NBT_HDR_SIZE;
        p = bytes;
 
-       cli_state_set_uid(state->cli, SVAL(inbuf, smb_uid));
+       cli_state_set_uid(state->cli, SVAL(inhdr, HDR_UID));
        cli->is_guestlogin = ((SVAL(vwv+2, 0) & 1) != 0);
 
        status = smb_bytes_talloc_string(cli,
-                                       inbuf,
+                                       inhdr,
                                        &cli->server_os,
                                        p,
                                        bytes+num_bytes-p,
@@ -1059,7 +1059,7 @@ static void cli_session_setup_nt1_done(struct tevent_req 
*subreq)
        p += ret;
 
        status = smb_bytes_talloc_string(cli,
-                                       inbuf,
+                                       inhdr,
                                        &cli->server_type,
                                        p,
                                        bytes+num_bytes-p,
@@ -1071,7 +1071,7 @@ static void cli_session_setup_nt1_done(struct tevent_req 
*subreq)
        p += ret;
 
        status = smb_bytes_talloc_string(cli,
-                                       inbuf,
+                                       inhdr,
                                        &cli->server_domain,
                                        p,
                                        bytes+num_bytes-p,
@@ -1159,7 +1159,7 @@ struct cli_sesssetup_blob_state {
        struct iovec *recv_iov;
 
        NTSTATUS status;
-       char *inbuf;
+       uint8_t *inbuf;
        DATA_BLOB ret_blob;
 };
 
@@ -1295,7 +1295,8 @@ static void cli_sesssetup_blob_done(struct tevent_req 
*subreq)
        NTSTATUS status;
        uint8_t *p;
        uint16_t blob_length;
-       uint8_t *inbuf;
+       uint8_t *in;
+       uint8_t *inhdr;
        ssize_t ret;
 
        if (smbXcli_conn_protocol(state->cli->conn) >= PROTOCOL_SMB2_02) {
@@ -1303,7 +1304,7 @@ static void cli_sesssetup_blob_done(struct tevent_req 
*subreq)
                                                    &state->recv_iov,
                                                    &state->ret_blob);
        } else {
-               status = cli_smb_recv(subreq, state, &inbuf, 4, &wct, &vwv,
+               status = cli_smb_recv(subreq, state, &in, 4, &wct, &vwv,
                                      &num_bytes, &bytes);
                TALLOC_FREE(state->buf);
        }
@@ -1320,8 +1321,9 @@ static void cli_sesssetup_blob_done(struct tevent_req 
*subreq)
                goto next;
        }
 
-       state->inbuf = (char *)inbuf;
-       cli_state_set_uid(state->cli, SVAL(inbuf, smb_uid));
+       state->inbuf = in;
+       inhdr = in + NBT_HDR_SIZE;
+       cli_state_set_uid(state->cli, SVAL(inhdr, HDR_UID));
        cli->is_guestlogin = ((SVAL(vwv+2, 0) & 1) != 0);
 
        blob_length = SVAL(vwv+3, 0);
@@ -1334,7 +1336,7 @@ static void cli_sesssetup_blob_done(struct tevent_req 
*subreq)
        p = bytes + blob_length;
 
        status = smb_bytes_talloc_string(cli,
-                                       (char *)inbuf,
+                                       inhdr,
                                        &cli->server_os,
                                        p,
                                        bytes+num_bytes-p,
@@ -1347,7 +1349,7 @@ static void cli_sesssetup_blob_done(struct tevent_req 
*subreq)
        p += ret;
 
        status = smb_bytes_talloc_string(cli,
-                                       (char *)inbuf,
+                                       inhdr,
                                        &cli->server_type,
                                        p,
                                        bytes+num_bytes-p,
@@ -1360,7 +1362,7 @@ static void cli_sesssetup_blob_done(struct tevent_req 
*subreq)
        p += ret;
 
        status = smb_bytes_talloc_string(cli,
-                                       (char *)inbuf,
+                                       inhdr,
                                        &cli->server_domain,
                                        p,
                                        bytes+num_bytes-p,
@@ -1390,13 +1392,13 @@ next:
 static NTSTATUS cli_sesssetup_blob_recv(struct tevent_req *req,
                                        TALLOC_CTX *mem_ctx,
                                        DATA_BLOB *pblob,
-                                       char **pinbuf,
+                                       uint8_t **pinbuf,
                                        struct iovec **precv_iov)
 {
        struct cli_sesssetup_blob_state *state = tevent_req_data(
                req, struct cli_sesssetup_blob_state);
        NTSTATUS status;
-       char *inbuf;
+       uint8_t *inbuf;
        struct iovec *recv_iov;
 
        if (tevent_req_is_nterror(req, &status)) {
@@ -1503,7 +1505,7 @@ static void cli_session_setup_kerberos_done(struct 
tevent_req *subreq)
                subreq, struct tevent_req);
        struct cli_session_setup_kerberos_state *state = tevent_req_data(
                req, struct cli_session_setup_kerberos_state);
-       char *inbuf = NULL;
+       uint8_t *inbuf = NULL;
        struct iovec *recv_iov = NULL;
        NTSTATUS status;
 
@@ -1528,7 +1530,7 @@ static void cli_session_setup_kerberos_done(struct 
tevent_req *subreq)
        } else {
                if (smb1cli_conn_activate_signing(state->cli->conn, 
state->session_key_krb5,
                                           data_blob_null)
-                   && !smb1cli_conn_check_signing(state->cli->conn, (uint8_t 
*)inbuf, 1)) {
+                   && !smb1cli_conn_check_signing(state->cli->conn, inbuf, 1)) 
{
                        tevent_req_nterror(req, NT_STATUS_ACCESS_DENIED);
                        return;
                }
@@ -1685,7 +1687,7 @@ static void cli_session_setup_ntlmssp_done(struct 
tevent_req *subreq)
        struct cli_session_setup_ntlmssp_state *state = tevent_req_data(
                req, struct cli_session_setup_ntlmssp_state);
        DATA_BLOB blob_in, msg_in, blob_out;
-       char *inbuf = NULL;
+       uint8_t *inbuf = NULL;
        struct iovec *recv_iov = NULL;
        bool parse_ret;
        NTSTATUS status;
@@ -1736,7 +1738,7 @@ static void cli_session_setup_ntlmssp_done(struct 
tevent_req *subreq)
                        if (smb1cli_conn_activate_signing(
                                    state->cli->conn, 
state->ntlmssp_state->session_key,
                                    data_blob_null)
-                           && !smb1cli_conn_check_signing(state->cli->conn, 
(uint8_t *)inbuf, 1)) {
+                           && !smb1cli_conn_check_signing(state->cli->conn, 
inbuf, 1)) {
                                tevent_req_nterror(req, 
NT_STATUS_ACCESS_DENIED);
                                return;
                        }
@@ -2411,7 +2413,7 @@ static void cli_tcon_andx_done(struct tevent_req *subreq)
                req, struct cli_tcon_andx_state);
        struct cli_state *cli = state->cli;
        uint8_t *in;
-       char *inbuf;
+       uint8_t *inhdr;
        uint8_t wct;
        uint16_t *vwv;
        uint32_t num_bytes;
@@ -2426,12 +2428,12 @@ static void cli_tcon_andx_done(struct tevent_req 
*subreq)
                return;
        }
 
-       inbuf = (char *)in;
+       inhdr = in + NBT_HDR_SIZE;
 


-- 
Samba Shared Repository

Reply via email to