From 802b9d7ec614e25ff99c367cfaf267d8334311f1 Mon Sep 17 00:00:00 2001 From: Michael Adam Date: Tue, 10 Sep 2013 18:07:15 +0200 Subject: idmap_autorid: change idmap_autorid_loadconfig() to return NTSTATUS for better error propagation. Pair-Programmed-With: Atul Kulkarni Signed-off-by: Michael Adam Signed-off-by: Atul Kulkarni Reviewed-by: Volker Lendecke --- source3/winbindd/idmap_autorid.c | 9 ++++++++- source3/winbindd/idmap_autorid_tdb.c | 20 +++++++++++++------- 2 files changed, 21 insertions(+), 8 deletions(-) (limited to 'source3/winbindd') diff --git a/source3/winbindd/idmap_autorid.c b/source3/winbindd/idmap_autorid.c index d6fd0b9c56..60ce33c35f 100644 --- a/source3/winbindd/idmap_autorid.c +++ b/source3/winbindd/idmap_autorid.c @@ -665,7 +665,14 @@ static NTSTATUS idmap_autorid_initialize(struct idmap_domain *dom) config->minvalue, config->rangesize, config->maxranges)); /* read previously stored config and current HWM */ - storedconfig = idmap_autorid_loadconfig(autorid_db, talloc_tos()); + status = idmap_autorid_loadconfig(autorid_db, talloc_tos(), + &storedconfig); + if (NT_STATUS_EQUAL(status, NT_STATUS_NOT_FOUND)) { + DEBUG(5, ("No configuration found. Storing initial " + "configuration.\n")); + } else if (!NT_STATUS_IS_OK(status)) { + goto error; + } status = dbwrap_fetch_uint32_bystring(autorid_db, HWM, &hwm); if (!NT_STATUS_IS_OK(status)) { diff --git a/source3/winbindd/idmap_autorid_tdb.c b/source3/winbindd/idmap_autorid_tdb.c index 29d3a4dc01..7ded36f847 100644 --- a/source3/winbindd/idmap_autorid_tdb.c +++ b/source3/winbindd/idmap_autorid_tdb.c @@ -282,36 +282,42 @@ bool idmap_autorid_parse_configstr(const char *configstr, return true; } -struct autorid_global_config *idmap_autorid_loadconfig(struct db_context *db, - TALLOC_CTX *mem_ctx) +NTSTATUS idmap_autorid_loadconfig(struct db_context *db, + TALLOC_CTX *mem_ctx, + struct autorid_global_config **result) { struct autorid_global_config *cfg; NTSTATUS status; bool ok; char *configstr = NULL; + if (result == NULL) { + return NT_STATUS_INVALID_PARAMETER; + } + status = idmap_autorid_getconfigstr(db, mem_ctx, &configstr); if (!NT_STATUS_IS_OK(status)) { - return NULL; + return status; } cfg = talloc_zero(mem_ctx, struct autorid_global_config); - if (!cfg) { - return NULL; + if (cfg == NULL) { + return NT_STATUS_NO_MEMORY; } ok = idmap_autorid_parse_configstr(configstr, cfg); if (!ok) { talloc_free(cfg); - return NULL; + return NT_STATUS_INVALID_PARAMETER; } DEBUG(10, ("Loaded previously stored configuration " "minvalue:%d rangesize:%d\n", cfg->minvalue, cfg->rangesize)); - return cfg; + *result = cfg; + return NT_STATUS_OK; } NTSTATUS idmap_autorid_saveconfig(struct db_context *db, -- cgit