From a12c3305b328d653a19cb17fcf1d47e3ab9b0898 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Wed, 3 Nov 2010 20:57:38 +1100 Subject: [PATCH] s4-server: cleanup allocation of process models Autobuild-User: Andrew Tridgell Autobuild-Date: Wed Nov 3 10:40:52 UTC 2010 on sn-devel-104 --- source4/smbd/process_model.c | 14 +++++--------- source4/smbd/process_model.h | 2 +- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/source4/smbd/process_model.c b/source4/smbd/process_model.c index 7b18f583a71..af12a7b8cb1 100644 --- a/source4/smbd/process_model.c +++ b/source4/smbd/process_model.c @@ -24,7 +24,7 @@ /* the list of currently registered process models */ static struct process_model { - struct model_ops *ops; + const struct model_ops *ops; bool initialised; } *models = NULL; static int num_models; @@ -74,10 +74,8 @@ _PUBLIC_ const struct model_ops *process_model_startup(const char *model) The 'name' can be later used by other backends to find the operations structure for this backend. */ -_PUBLIC_ NTSTATUS register_process_model(const void *_ops) +_PUBLIC_ NTSTATUS register_process_model(const struct model_ops *ops) { - const struct model_ops *ops = _ops; - if (process_model_byname(ops->name) != NULL) { /* its already registered! */ DEBUG(0,("PROCESS_MODEL '%s' already registered\n", @@ -85,19 +83,17 @@ _PUBLIC_ NTSTATUS register_process_model(const void *_ops) return NT_STATUS_OBJECT_NAME_COLLISION; } - models = realloc_p(models, struct process_model, num_models+1); + models = talloc_realloc(NULL, models, struct process_model, num_models+1); if (!models) { smb_panic("out of memory in register_process_model"); } - models[num_models].ops = smb_xmemdup(ops, sizeof(*ops)); - models[num_models].ops->name = smb_xstrdup(ops->name); + models[num_models].ops = ops; models[num_models].initialised = false; num_models++; - DEBUG(3,("PROCESS_MODEL '%s' registered\n", - ops->name)); + DEBUG(3,("PROCESS_MODEL '%s' registered\n", ops->name)); return NT_STATUS_OK; } diff --git a/source4/smbd/process_model.h b/source4/smbd/process_model.h index b5790316ec2..4399d3689fb 100644 --- a/source4/smbd/process_model.h +++ b/source4/smbd/process_model.h @@ -80,7 +80,7 @@ struct process_model_critical_sizes { extern const struct model_ops single_ops; const struct model_ops *process_model_startup(const char *model); -NTSTATUS register_process_model(const void *_ops); +NTSTATUS register_process_model(const struct model_ops *ops); NTSTATUS process_model_init(struct loadparm_context *lp_ctx); #endif /* __PROCESS_MODEL_H__ */