summaryrefslogtreecommitdiff
path: root/source3/winbindd
diff options
context:
space:
mode:
authorMichael Adam <obnox@samba.org>2013-09-10 18:07:15 +0200
committerVolker Lendecke <vl@samba.org>2013-10-01 12:04:44 +0000
commit802b9d7ec614e25ff99c367cfaf267d8334311f1 (patch)
tree697ca5837489e094b38b48c7bb4ea8cdd3db7bda /source3/winbindd
parentf6c34b1e236aab275d6cfbc12e57af7d692b8c19 (diff)
downloadsamba-802b9d7ec614e25ff99c367cfaf267d8334311f1.tar.gz
samba-802b9d7ec614e25ff99c367cfaf267d8334311f1.tar.bz2
samba-802b9d7ec614e25ff99c367cfaf267d8334311f1.zip
idmap_autorid: change idmap_autorid_loadconfig() to return NTSTATUS
for better error propagation. Pair-Programmed-With: Atul Kulkarni <atul.kulkarni@in.ibm.com> Signed-off-by: Michael Adam <obnox@samba.org> Signed-off-by: Atul Kulkarni <atul.kulkarni@in.ibm.com> Reviewed-by: Volker Lendecke <vl@samba.org>
Diffstat (limited to 'source3/winbindd')
-rw-r--r--source3/winbindd/idmap_autorid.c9
-rw-r--r--source3/winbindd/idmap_autorid_tdb.c20
2 files changed, 21 insertions, 8 deletions
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,