From e44e99804519b37852ee9ea24d18d2d2710110ce Mon Sep 17 00:00:00 2001 From: Jakub Hrozek Date: Thu, 9 Sep 2010 15:29:06 +0200 Subject: Use a different min_id for local domain When we changed the default min_id to be 1, we forgot about the local domain. It makes sense to keep the minimum id larger there. --- src/confdb/confdb.c | 17 ++++++++++++++++- src/confdb/confdb.h | 1 + 2 files changed, 17 insertions(+), 1 deletion(-) (limited to 'src/confdb') diff --git a/src/confdb/confdb.c b/src/confdb/confdb.c index eebc2cd3d..1277e99c5 100644 --- a/src/confdb/confdb.c +++ b/src/confdb/confdb.c @@ -640,6 +640,20 @@ static errno_t get_entry_as_bool(struct ldb_message *msg, return EOK; } + +/* The default UID/GID for domains is 1. This wouldn't work well with + * the local provider */ +static uint32_t confdb_get_min_id(struct sss_domain_info *domain) +{ + uint32_t defval = SSSD_MIN_ID; + + if (domain && strcasecmp(domain->provider, "local") == 0) { + defval = SSSD_LOCAL_MINID; + } + + return defval; +} + static int confdb_get_domain_internal(struct confdb_ctx *cdb, TALLOC_CTX *mem_ctx, const char *name, @@ -784,7 +798,8 @@ static int confdb_get_domain_internal(struct confdb_ctx *cdb, } ret = get_entry_as_uint32(res->msgs[0], &domain->id_min, - CONFDB_DOMAIN_MINID, SSSD_MIN_ID); + CONFDB_DOMAIN_MINID, + confdb_get_min_id(domain)); if (ret != EOK) { DEBUG(0, ("Invalid value for minId\n")); ret = EINVAL; diff --git a/src/confdb/confdb.h b/src/confdb/confdb.h index 24b565d29..d553beb28 100644 --- a/src/confdb/confdb.h +++ b/src/confdb/confdb.h @@ -40,6 +40,7 @@ #define CONFDB_FILE "config.ldb" #define CONFDB_DEFAULT_CONFIG_FILE SSSD_CONF_DIR"/sssd.conf" #define SSSD_MIN_ID 1 +#define SSSD_LOCAL_MINID 1000 /* Configuration options */ -- cgit