]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
dcesrv_core: maintain the number of allocated association groups per dce_ctx
authorStefan Metzmacher <metze@samba.org>
Thu, 12 Oct 2023 10:49:42 +0000 (12:49 +0200)
committerAndrew Bartlett <abartlet@samba.org>
Tue, 17 Oct 2023 19:20:38 +0000 (19:20 +0000)
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
librpc/rpc/dcesrv_core.h
source3/rpc_server/rpc_worker.c
source4/rpc_server/dcerpc_server.c

index 64b8953bec248a94901879a367a8e1cdea881ede..3e23e125cbc71b1f2fe76fa20134d67fda7dc827 100644 (file)
@@ -450,6 +450,7 @@ struct dcesrv_context {
        struct loadparm_context *lp_ctx;
 
        struct idr_context *assoc_groups_idr;
+       uint32_t assoc_groups_num;
 
        struct dcesrv_connection *broken_connections;
 
index df5298427a040c3294c621eb52dd4324293c5228..9a4c33780e792858d6f5c69f4e1a210acea8cba3 100644 (file)
@@ -652,6 +652,9 @@ static int rpc_worker_assoc_group_destructor(
                DBG_WARNING("Failed to remove assoc_group 0x%08x\n",
                            assoc_group->id);
        }
+
+       SMB_ASSERT(assoc_group->dce_ctx->assoc_groups_num > 0);
+       assoc_group->dce_ctx->assoc_groups_num -= 1;
        return 0;
 }
 
@@ -691,6 +694,9 @@ static struct dcesrv_assoc_group *rpc_worker_assoc_group_new(
 
        talloc_set_destructor(assoc_group, rpc_worker_assoc_group_destructor);
 
+       SMB_ASSERT(dce_ctx->assoc_groups_num < UINT16_MAX);
+       dce_ctx->assoc_groups_num += 1;
+
        return assoc_group;
 }
 
index ea9e262279bb820077adaf125ef64df630deeeb3..9614a1ab9b027bc52be31187c67cdb6407f4e9e8 100644 (file)
@@ -80,6 +80,8 @@ static int dcesrv_assoc_group_destructor(struct dcesrv_assoc_group *assoc_group)
                DEBUG(0,(__location__ ": Failed to remove assoc_group 0x%08x\n",
                         assoc_group->id));
        }
+       SMB_ASSERT(assoc_group->dce_ctx->assoc_groups_num > 0);
+       assoc_group->dce_ctx->assoc_groups_num -= 1;
        return 0;
 }
 
@@ -114,6 +116,9 @@ static struct dcesrv_assoc_group *dcesrv_assoc_group_new(struct dcesrv_connectio
 
        talloc_set_destructor(assoc_group, dcesrv_assoc_group_destructor);
 
+       SMB_ASSERT(dce_ctx->assoc_groups_num < UINT16_MAX);
+       dce_ctx->assoc_groups_num += 1;
+
        return assoc_group;
 }