From: Stefan Metzmacher Date: Thu, 12 Oct 2023 10:49:42 +0000 (+0200) Subject: dcesrv_core: maintain the number of allocated association groups per dce_ctx X-Git-Tag: talloc-2.4.2~1254 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=40e780ad162c8c561822d6284f8e6227fca69c8a;p=thirdparty%2Fsamba.git dcesrv_core: maintain the number of allocated association groups per dce_ctx Signed-off-by: Stefan Metzmacher Reviewed-by: Andrew Bartlett --- diff --git a/librpc/rpc/dcesrv_core.h b/librpc/rpc/dcesrv_core.h index 64b8953bec2..3e23e125cbc 100644 --- a/librpc/rpc/dcesrv_core.h +++ b/librpc/rpc/dcesrv_core.h @@ -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; diff --git a/source3/rpc_server/rpc_worker.c b/source3/rpc_server/rpc_worker.c index df5298427a0..9a4c33780e7 100644 --- a/source3/rpc_server/rpc_worker.c +++ b/source3/rpc_server/rpc_worker.c @@ -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; } diff --git a/source4/rpc_server/dcerpc_server.c b/source4/rpc_server/dcerpc_server.c index ea9e262279b..9614a1ab9b0 100644 --- a/source4/rpc_server/dcerpc_server.c +++ b/source4/rpc_server/dcerpc_server.c @@ -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; }