The branch, master has been updated
       via  abd8b18 smbd:smb2_creat: remove outdated TODO comments
       via  0fe29f6 smbXsrv_client: factor fetch-locking of global record into 
function
       via  aaddde1 smbXsrv_session: factor fetch-locking of local record into 
function
       via  37eba90 smbXsrv_session: factor fetch-locking of global record into 
function
       via  a9dcbd0 smbXsrv_tcon: factor fetch-locking of local record into 
function
       via  a5e4f14 smbXsrv_tcon: factor fetch-locking of global record into 
function
      from  9dfd531 s3/libsmb/clirap2.c: use actual buffer size

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


- Log -----------------------------------------------------------------
commit abd8b182447fce6dc1436e8ff3907b871705d7e0
Author: Michael Adam <[email protected]>
Date:   Sun Feb 28 01:46:47 2016 +0100

    smbd:smb2_creat: remove outdated TODO comments
    
    Leases have meanwhile been implemented and the
    TODO has been taken care of.
    
    Signed-off-by: Michael Adam <[email protected]>
    Reviewed-by: Jeremy Allson <[email protected]>
    
    Autobuild-User(master): Jeremy Allison <[email protected]>
    Autobuild-Date(master): Sun Feb 28 08:16:26 CET 2016 on sn-devel-144

commit 0fe29f66326e9a39254fdc2fd255075e5055eeb6
Author: Michael Adam <[email protected]>
Date:   Sat Feb 27 01:58:45 2016 +0100

    smbXsrv_client: factor fetch-locking of global record into function
    
    Signed-off-by: Michael Adam <[email protected]>
    Reviewed-by: Jeremy Allison <[email protected]>

commit aaddde12d997c7d35b1e76709afd310990dc9cdb
Author: Michael Adam <[email protected]>
Date:   Sat Feb 27 01:37:34 2016 +0100

    smbXsrv_session: factor fetch-locking of local record into function
    
    Signed-off-by: Michael Adam <[email protected]>
    Reviewed-by: Jeremy Allison <[email protected]>

commit 37eba9006e95235785d851f4d4c8110bf77e2b64
Author: Michael Adam <[email protected]>
Date:   Sat Feb 27 01:26:16 2016 +0100

    smbXsrv_session: factor fetch-locking of global record into function
    
    Signed-off-by: Michael Adam <[email protected]>
    Reviewed-by: Jeremy Allison <[email protected]>

commit a9dcbd09801ab19c2abdb803c730120bd20d8175
Author: Michael Adam <[email protected]>
Date:   Sat Feb 27 01:06:13 2016 +0100

    smbXsrv_tcon: factor fetch-locking of local record into function
    
    Signed-off-by: Michael Adam <[email protected]>
    Reviewed-by: Jeremy Allison <[email protected]>

commit a5e4f14c3b132c886cda2ab4cc14f1f764ff04eb
Author: Michael Adam <[email protected]>
Date:   Sat Feb 27 00:52:59 2016 +0100

    smbXsrv_tcon: factor fetch-locking of global record into function
    
    Signed-off-by: Michael Adam <[email protected]>
    Reviewed-by: Jeremy Allison <[email protected]>

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

Summary of changes:
 source3/smbd/smb2_create.c     |   8 ---
 source3/smbd/smbXsrv_client.c  |  62 +++++++++++---------
 source3/smbd/smbXsrv_session.c | 129 ++++++++++++++++++++---------------------
 source3/smbd/smbXsrv_tcon.c    | 119 +++++++++++++++++++------------------
 4 files changed, 156 insertions(+), 162 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/smbd/smb2_create.c b/source3/smbd/smb2_create.c
index 62948a0..7917d42 100644
--- a/source3/smbd/smb2_create.c
+++ b/source3/smbd/smb2_create.c
@@ -555,10 +555,6 @@ static struct tevent_req *smbd_smb2_create_send(TALLOC_CTX 
*mem_ctx,
                 * (Note that the cases of an additional dh2q or dh2c blob
                 *  which require a different error code, have been treated
                 *  above.)
-                *
-                * TODO:
-                * This is only true for the oplock case:
-                * For leases, lease request is required additionally.
                 */
 
                if (dhnq) {
@@ -595,10 +591,6 @@ static struct tevent_req *smbd_smb2_create_send(TALLOC_CTX 
*mem_ctx,
                 * (Note that the cases of an additional dhnq, dhnc or dh2q
                 *  blob which require a different error code, have been
                 *  treated above.)
-                *
-                * TODO:
-                * This is only true for the oplock case:
-                * For leases, lease request is required additionally!
                 */
 
                num_blobs_allowed = 1;
diff --git a/source3/smbd/smbXsrv_client.c b/source3/smbd/smbXsrv_client.c
index 0e21fc6..2dd4cad 100644
--- a/source3/smbd/smbXsrv_client.c
+++ b/source3/smbd/smbXsrv_client.c
@@ -118,6 +118,28 @@ static TDB_DATA smbXsrv_client_global_id_to_key(const 
struct GUID *client_guid,
        return key;
 }
 
+static struct db_record *smbXsrv_client_global_fetch_locked(
+                       struct db_context *db,
+                       const struct GUID *client_guid,
+                       TALLOC_CTX *mem_ctx)
+{
+       TDB_DATA key;
+       uint8_t key_buf[SMBXSRV_CLIENT_GLOBAL_TDB_KEY_SIZE];
+       struct db_record *rec = NULL;
+
+       key = smbXsrv_client_global_id_to_key(client_guid, key_buf);
+
+       rec = dbwrap_fetch_locked(db, mem_ctx, key);
+
+       if (rec == NULL) {
+               DBG_DEBUG("Failed to lock guid [%s], key '%s'\n",
+                         GUID_string(talloc_tos(), client_guid),
+                         hex_encode_talloc(talloc_tos(), key.dptr, key.dsize));
+       }
+
+       return rec;
+}
+
 static NTSTATUS smbXsrv_client_table_create(TALLOC_CTX *mem_ctx,
                                            struct messaging_context *msg_ctx,
                                            uint32_t max_clients,
@@ -252,18 +274,12 @@ NTSTATUS smb2srv_client_lookup_global(struct 
smbXsrv_client *client,
        struct smbXsrv_client_table *table = client->table;
        struct smbXsrv_client_global0 *global = NULL;
        bool is_free = false;
-       uint8_t key_buf[SMBXSRV_CLIENT_GLOBAL_TDB_KEY_SIZE];
-       TDB_DATA key;
        struct db_record *db_rec;
 
-       key = smbXsrv_client_global_id_to_key(&client_guid, key_buf);
-
-       db_rec = dbwrap_fetch_locked(table->global.db_ctx,
-                                    talloc_tos(), key);
+       db_rec = smbXsrv_client_global_fetch_locked(table->global.db_ctx,
+                                                   &client_guid,
+                                                   talloc_tos());
        if (db_rec == NULL) {
-               DBG_ERR("guid [%s]: Failed to lock key '%s'\n",
-                       GUID_string(talloc_tos(), &client_guid),
-                       hex_encode_talloc(talloc_tos(), key.dptr, key.dsize));
                return NT_STATUS_INTERNAL_DB_ERROR;
        }
 
@@ -681,8 +697,6 @@ NTSTATUS smbXsrv_client_update(struct smbXsrv_client 
*client)
 {
        struct smbXsrv_client_table *table = client->table;
        NTSTATUS status;
-       uint8_t key_buf[SMBXSRV_CLIENT_GLOBAL_TDB_KEY_SIZE];
-       TDB_DATA key;
 
        if (client->global->db_rec != NULL) {
                DBG_ERR("guid [%s]: Called with db_rec != NULL'\n",
@@ -691,15 +705,11 @@ NTSTATUS smbXsrv_client_update(struct smbXsrv_client 
*client)
                return NT_STATUS_INTERNAL_ERROR;
        }
 
-       key = smbXsrv_client_global_id_to_key(&client->global->client_guid,
-                                             key_buf);
-
-       client->global->db_rec = dbwrap_fetch_locked(table->global.db_ctx,
-                                                    client->global, key);
+       client->global->db_rec = smbXsrv_client_global_fetch_locked(
+                                       table->global.db_ctx,
+                                       &client->global->client_guid,
+                                       client->global /* TALLOC_CTX */);
        if (client->global->db_rec == NULL) {
-               DBG_ERR("guid [%s]: Failed to lock key '%s'\n",
-                       GUID_string(talloc_tos(), &client->global->client_guid),
-                       hex_encode_talloc(talloc_tos(), key.dptr, key.dsize));
                return NT_STATUS_INTERNAL_DB_ERROR;
        }
 
@@ -730,8 +740,6 @@ NTSTATUS smbXsrv_client_remove(struct smbXsrv_client 
*client)
 {
        struct smbXsrv_client_table *table = client->table;
        NTSTATUS status;
-       uint8_t key_buf[SMBXSRV_CLIENT_GLOBAL_TDB_KEY_SIZE];
-       TDB_DATA key;
 
        if (client->global->db_rec != NULL) {
                DBG_ERR("client_guid[%s]: Called with db_rec != NULL'\n",
@@ -743,15 +751,11 @@ NTSTATUS smbXsrv_client_remove(struct smbXsrv_client 
*client)
                return NT_STATUS_OK;
        }
 
-       key = smbXsrv_client_global_id_to_key(&client->global->client_guid,
-                                             key_buf);
-
-       client->global->db_rec = dbwrap_fetch_locked(table->global.db_ctx,
-                                                    client->global, key);
+       client->global->db_rec = smbXsrv_client_global_fetch_locked(
+                                       table->global.db_ctx,
+                                       &client->global->client_guid,
+                                       client->global /* TALLOC_CTX */);
        if (client->global->db_rec == NULL) {
-               DBG_ERR("client_guid[%s]: Failed to lock key '%s'\n",
-                       GUID_string(talloc_tos(), &client->global->client_guid),
-                       hex_encode_talloc(talloc_tos(), key.dptr, key.dsize));
                return NT_STATUS_INTERNAL_DB_ERROR;
        }
 
diff --git a/source3/smbd/smbXsrv_session.c b/source3/smbd/smbXsrv_session.c
index 732388b..a5aee8c 100644
--- a/source3/smbd/smbXsrv_session.c
+++ b/source3/smbd/smbXsrv_session.c
@@ -161,6 +161,48 @@ static NTSTATUS smbXsrv_session_local_key_to_id(TDB_DATA 
key, uint32_t *id)
        return NT_STATUS_OK;
 }
 
+static struct db_record *smbXsrv_session_global_fetch_locked(
+                       struct db_context *db,
+                       uint32_t id,
+                       TALLOC_CTX *mem_ctx)
+{
+       TDB_DATA key;
+       uint8_t key_buf[SMBXSRV_SESSION_GLOBAL_TDB_KEY_SIZE];
+       struct db_record *rec = NULL;
+
+       key = smbXsrv_session_global_id_to_key(id, key_buf);
+
+       rec = dbwrap_fetch_locked(db, mem_ctx, key);
+
+       if (rec == NULL) {
+               DBG_DEBUG("Failed to lock global id 0x%08x, key '%s'\n", id,
+                         hex_encode_talloc(talloc_tos(), key.dptr, key.dsize));
+       }
+
+       return rec;
+}
+
+static struct db_record *smbXsrv_session_local_fetch_locked(
+                       struct db_context *db,
+                       uint32_t id,
+                       TALLOC_CTX *mem_ctx)
+{
+       TDB_DATA key;
+       uint8_t key_buf[SMBXSRV_SESSION_LOCAL_TDB_KEY_SIZE];
+       struct db_record *rec = NULL;
+
+       key = smbXsrv_session_local_id_to_key(id, key_buf);
+
+       rec = dbwrap_fetch_locked(db, mem_ctx, key);
+
+       if (rec == NULL) {
+               DBG_DEBUG("Failed to lock local id 0x%08x, key '%s'\n", id,
+                         hex_encode_talloc(talloc_tos(), key.dptr, key.dsize));
+       }
+
+       return rec;
+}
+
 static void smbXsrv_session_close_loop(struct tevent_req *subreq);
 
 static NTSTATUS smbXsrv_session_table_init(struct smbXsrv_connection *conn,
@@ -462,8 +504,6 @@ static NTSTATUS smb1srv_session_local_allocate_id(struct 
db_context *db,
 
        for (i = 0; i < (range / 2); i++) {
                uint32_t id;
-               uint8_t key_buf[SMBXSRV_SESSION_LOCAL_TDB_KEY_SIZE];
-               TDB_DATA key;
                TDB_DATA val;
                struct db_record *rec = NULL;
 
@@ -477,9 +517,7 @@ static NTSTATUS smb1srv_session_local_allocate_id(struct 
db_context *db,
                        id = highest_id;
                }
 
-               key = smbXsrv_session_local_id_to_key(id, key_buf);
-
-               rec = dbwrap_fetch_locked(db, mem_ctx, key);
+               rec = smbXsrv_session_local_fetch_locked(db, id, mem_ctx);
                if (rec == NULL) {
                        return NT_STATUS_INSUFFICIENT_RESOURCES;
                }
@@ -529,16 +567,12 @@ static NTSTATUS smb1srv_session_local_allocate_id(struct 
db_context *db,
 
        if (NT_STATUS_IS_OK(state.status)) {
                uint32_t id;
-               uint8_t key_buf[SMBXSRV_SESSION_LOCAL_TDB_KEY_SIZE];
-               TDB_DATA key;
                TDB_DATA val;
                struct db_record *rec = NULL;
 
                id = state.useable_id;
 
-               key = smbXsrv_session_local_id_to_key(id, key_buf);
-
-               rec = dbwrap_fetch_locked(db, mem_ctx, key);
+               rec = smbXsrv_session_local_fetch_locked(db, id, mem_ctx);
                if (rec == NULL) {
                        return NT_STATUS_INSUFFICIENT_RESOURCES;
                }
@@ -693,8 +727,6 @@ static NTSTATUS smbXsrv_session_global_allocate(struct 
db_context *db,
                bool is_free = false;
                bool was_free = false;
                uint32_t id;
-               uint8_t key_buf[SMBXSRV_SESSION_GLOBAL_TDB_KEY_SIZE];
-               TDB_DATA key;
 
                if (i >= min_tries && last_free != 0) {
                        id = last_free;
@@ -708,9 +740,8 @@ static NTSTATUS smbXsrv_session_global_allocate(struct 
db_context *db,
                        id--;
                }
 
-               key = smbXsrv_session_global_id_to_key(id, key_buf);
-
-               global->db_rec = dbwrap_fetch_locked(db, mem_ctx, key);
+               global->db_rec = smbXsrv_session_global_fetch_locked(db, id,
+                                                                    mem_ctx);
                if (global->db_rec == NULL) {
                        talloc_free(global);
                        return NT_STATUS_INSUFFICIENT_RESOURCES;
@@ -931,8 +962,6 @@ struct tevent_req 
*smb2srv_session_close_previous_send(TALLOC_CTX *mem_ctx,
        uint64_t global_zeros = previous_session_id & 0xFFFFFFFF00000000LLU;
        struct smbXsrv_session_table *table = conn->client->session_table;
        struct security_token *current_token = NULL;
-       uint8_t key_buf[SMBXSRV_SESSION_GLOBAL_TDB_KEY_SIZE];
-       TDB_DATA key;
 
        req = tevent_req_create(mem_ctx, &state,
                                struct smb2srv_session_close_previous_state);
@@ -969,10 +998,10 @@ struct tevent_req 
*smb2srv_session_close_previous_send(TALLOC_CTX *mem_ctx,
                return tevent_req_post(req, ev);
        }
 
-       key = smbXsrv_session_global_id_to_key(global_id, key_buf);
-
-       state->db_rec = dbwrap_fetch_locked(table->global.db_ctx,
-                                           state, key);
+       state->db_rec = smbXsrv_session_global_fetch_locked(
+                                                       table->global.db_ctx,
+                                                       global_id,
+                                                       state /* TALLOC_CTX */);
        if (state->db_rec == NULL) {
                tevent_req_nterror(req, NT_STATUS_UNSUCCESSFUL);
                return tevent_req_post(req, ev);
@@ -1190,8 +1219,6 @@ NTSTATUS smbXsrv_session_create(struct smbXsrv_connection 
*conn,
 
        if (conn->protocol >= PROTOCOL_SMB2_02) {
                uint64_t id = global->session_global_id;
-               uint8_t key_buf[SMBXSRV_SESSION_LOCAL_TDB_KEY_SIZE];
-               TDB_DATA key;
 
                global->connection_dialect = conn->smb2.server.dialect;
 
@@ -1205,10 +1232,10 @@ NTSTATUS smbXsrv_session_create(struct 
smbXsrv_connection *conn,
 
                session->local_id = global->session_global_id;
 
-               key = smbXsrv_session_local_id_to_key(session->local_id, 
key_buf);
-
-               local_rec = dbwrap_fetch_locked(table->local.db_ctx,
-                                               session, key);
+               local_rec = smbXsrv_session_local_fetch_locked(
+                                               table->local.db_ctx,
+                                               session->local_id,
+                                               session /* TALLOC_CTX */);
                if (local_rec == NULL) {
                        TALLOC_FREE(session);
                        return NT_STATUS_NO_MEMORY;
@@ -1336,8 +1363,6 @@ NTSTATUS smbXsrv_session_update(struct smbXsrv_session 
*session)
 {
        struct smbXsrv_session_table *table = session->table;
        NTSTATUS status;
-       uint8_t key_buf[SMBXSRV_SESSION_GLOBAL_TDB_KEY_SIZE];
-       TDB_DATA key;
 
        if (session->global->db_rec != NULL) {
                DEBUG(0, ("smbXsrv_session_update(0x%08x): "
@@ -1346,18 +1371,11 @@ NTSTATUS smbXsrv_session_update(struct smbXsrv_session 
*session)
                return NT_STATUS_INTERNAL_ERROR;
        }
 
-       key = smbXsrv_session_global_id_to_key(
+       session->global->db_rec = smbXsrv_session_global_fetch_locked(
+                                       table->global.db_ctx,
                                        session->global->session_global_id,
-                                       key_buf);
-
-       session->global->db_rec = dbwrap_fetch_locked(table->global.db_ctx,
-                                                     session->global, key);
+                                       session->global /* TALLOC_CTX */);
        if (session->global->db_rec == NULL) {
-               DEBUG(0, ("smbXsrv_session_update(0x%08x): "
-                         "Failed to lock global key '%s'\n",
-                         session->global->session_global_id,
-                         hex_encode_talloc(talloc_tos(), key.dptr,
-                                           key.dsize)));
                return NT_STATUS_INTERNAL_DB_ERROR;
        }
 
@@ -1621,21 +1639,11 @@ NTSTATUS smbXsrv_session_logoff(struct smbXsrv_session 
*session)
        global_rec = session->global->db_rec;
        session->global->db_rec = NULL;
        if (global_rec == NULL) {
-               uint8_t key_buf[SMBXSRV_SESSION_GLOBAL_TDB_KEY_SIZE];
-               TDB_DATA key;
-
-               key = smbXsrv_session_global_id_to_key(
+               global_rec = smbXsrv_session_global_fetch_locked(
+                                       table->global.db_ctx,
                                        session->global->session_global_id,
-                                       key_buf);
-
-               global_rec = dbwrap_fetch_locked(table->global.db_ctx,
-                                                session->global, key);
+                                       session->global /* TALLOC_CTX */);
                if (global_rec == NULL) {
-                       DEBUG(0, ("smbXsrv_session_logoff(0x%08x): "
-                                 "Failed to lock global key '%s'\n",
-                                 session->global->session_global_id,
-                                 hex_encode_talloc(global_rec, key.dptr,
-                                                   key.dsize)));
                        error = NT_STATUS_INTERNAL_ERROR;
                }
        }
@@ -1658,20 +1666,11 @@ NTSTATUS smbXsrv_session_logoff(struct smbXsrv_session 
*session)
 
        local_rec = session->db_rec;
        if (local_rec == NULL) {
-               uint8_t key_buf[SMBXSRV_SESSION_LOCAL_TDB_KEY_SIZE];
-               TDB_DATA key;
-
-               key = smbXsrv_session_local_id_to_key(session->local_id,
-                                                     key_buf);
-
-               local_rec = dbwrap_fetch_locked(table->local.db_ctx,
-                                               session, key);
+               local_rec = smbXsrv_session_local_fetch_locked(
+                                               table->local.db_ctx,
+                                               session->local_id,
+                                               session /* TALLOC_CTX */);
                if (local_rec == NULL) {
-                       DEBUG(0, ("smbXsrv_session_logoff(0x%08x): "
-                                 "Failed to lock local key '%s'\n",
-                                 session->global->session_global_id,
-                                 hex_encode_talloc(local_rec, key.dptr,
-                                                   key.dsize)));
                        error = NT_STATUS_INTERNAL_ERROR;
                }
        }
diff --git a/source3/smbd/smbXsrv_tcon.c b/source3/smbd/smbXsrv_tcon.c
index 1d2a141..ddd03f6 100644
--- a/source3/smbd/smbXsrv_tcon.c
+++ b/source3/smbd/smbXsrv_tcon.c
@@ -150,6 +150,48 @@ static NTSTATUS smbXsrv_tcon_local_key_to_id(TDB_DATA key, 
uint32_t *id)
        return NT_STATUS_OK;
 }
 
+static struct db_record *smbXsrv_tcon_global_fetch_locked(
+                       struct db_context *db,
+                       uint32_t id,
+                       TALLOC_CTX *mem_ctx)
+{
+       TDB_DATA key;
+       uint8_t key_buf[SMBXSRV_TCON_GLOBAL_TDB_KEY_SIZE];
+       struct db_record *rec = NULL;
+
+       key = smbXsrv_tcon_global_id_to_key(id, key_buf);
+
+       rec = dbwrap_fetch_locked(db, mem_ctx, key);
+
+       if (rec == NULL) {
+               DBG_DEBUG("Failed to lock global id 0x%08x, key '%s'\n", id,
+                         hex_encode_talloc(talloc_tos(), key.dptr, key.dsize));
+       }
+
+       return rec;
+}
+
+static struct db_record *smbXsrv_tcon_local_fetch_locked(
+                       struct db_context *db,
+                       uint32_t id,
+                       TALLOC_CTX *mem_ctx)
+{
+       TDB_DATA key;
+       uint8_t key_buf[SMBXSRV_TCON_LOCAL_TDB_KEY_SIZE];
+       struct db_record *rec = NULL;
+
+       key = smbXsrv_tcon_local_id_to_key(id, key_buf);
+
+       rec = dbwrap_fetch_locked(db, mem_ctx, key);
+
+       if (rec == NULL) {
+               DBG_DEBUG("Failed to lock local id 0x%08x, key '%s'\n", id,
+                         hex_encode_talloc(talloc_tos(), key.dptr, key.dsize));
+       }
+
+       return rec;
+}
+
 static NTSTATUS smbXsrv_tcon_table_init(TALLOC_CTX *mem_ctx,
                                        struct smbXsrv_tcon_table *table,
                                        uint32_t lowest_id,
@@ -266,8 +308,6 @@ static NTSTATUS smb1srv_tcon_local_allocate_id(struct 
db_context *db,
 
        for (i = 0; i < (range / 2); i++) {
                uint32_t id;
-               uint8_t key_buf[SMBXSRV_TCON_LOCAL_TDB_KEY_SIZE];
-               TDB_DATA key;
                TDB_DATA val;
                struct db_record *rec = NULL;
 
@@ -281,9 +321,7 @@ static NTSTATUS smb1srv_tcon_local_allocate_id(struct 
db_context *db,
                        id = highest_id;
                }
 
-               key = smbXsrv_tcon_local_id_to_key(id, key_buf);
-
-               rec = dbwrap_fetch_locked(db, mem_ctx, key);
+               rec = smbXsrv_tcon_local_fetch_locked(db, id, mem_ctx);
                if (rec == NULL) {
                        return NT_STATUS_INSUFFICIENT_RESOURCES;
                }
@@ -333,16 +371,12 @@ static NTSTATUS smb1srv_tcon_local_allocate_id(struct 
db_context *db,
 
        if (NT_STATUS_IS_OK(state.status)) {
                uint32_t id;
-               uint8_t key_buf[SMBXSRV_TCON_LOCAL_TDB_KEY_SIZE];
-               TDB_DATA key;
                TDB_DATA val;
                struct db_record *rec = NULL;
 
                id = state.useable_id;
 
-               key = smbXsrv_tcon_local_id_to_key(id, key_buf);
-
-               rec = dbwrap_fetch_locked(db, mem_ctx, key);
+               rec = smbXsrv_tcon_local_fetch_locked(db, id, mem_ctx);
                if (rec == NULL) {
                        return NT_STATUS_INSUFFICIENT_RESOURCES;
                }
@@ -473,8 +507,6 @@ static NTSTATUS smbXsrv_tcon_global_allocate(struct 
db_context *db,
                bool is_free = false;
                bool was_free = false;
                uint32_t id;
-               uint8_t key_buf[SMBXSRV_TCON_GLOBAL_TDB_KEY_SIZE];
-               TDB_DATA key;
 
                if (i >= min_tries && last_free != 0) {
                        id = last_free;
@@ -488,9 +520,8 @@ static NTSTATUS smbXsrv_tcon_global_allocate(struct 
db_context *db,
                        id--;
                }
 
-               key = smbXsrv_tcon_global_id_to_key(id, key_buf);
-
-               global->db_rec = dbwrap_fetch_locked(db, mem_ctx, key);
+               global->db_rec = smbXsrv_tcon_global_fetch_locked(db, id,
+                                                                 mem_ctx);
                if (global->db_rec == NULL) {
                        talloc_free(global);
                        return NT_STATUS_INSUFFICIENT_RESOURCES;
@@ -737,17 +768,14 @@ static NTSTATUS smbXsrv_tcon_create(struct 
smbXsrv_tcon_table *table,
 
        if (protocol >= PROTOCOL_SMB2_02) {
                uint64_t id = global->tcon_global_id;
-               uint8_t key_buf[SMBXSRV_TCON_LOCAL_TDB_KEY_SIZE];
-               TDB_DATA key;
 
                global->tcon_wire_id = id;


-- 
Samba Shared Repository

Reply via email to