diff options
Diffstat (limited to 'source3/winbindd')
-rw-r--r-- | source3/winbindd/idmap_cache.c | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/source3/winbindd/idmap_cache.c b/source3/winbindd/idmap_cache.c index a3207663e4..b724ba0c59 100644 --- a/source3/winbindd/idmap_cache.c +++ b/source3/winbindd/idmap_cache.c @@ -119,7 +119,6 @@ NTSTATUS idmap_cache_set(struct idmap_cache_ctx *cache, const struct id_map *id) { return NT_STATUS_OK; } - ret = idmap_cache_build_sidkey(cache, &sidkey, id); if (!NT_STATUS_IS_OK(ret)) return ret; @@ -259,11 +258,11 @@ static NTSTATUS idmap_cache_fill_map(struct id_map *id, const char *value) /* see if it is a sid */ if ( ! strncmp("IDMAP/SID/", value, 10)) { - + if ( ! string_to_sid(id->sid, &value[10])) { goto failed; } - + id->status = ID_MAPPED; return NT_STATUS_OK; @@ -271,21 +270,21 @@ static NTSTATUS idmap_cache_fill_map(struct id_map *id, const char *value) /* not a SID see if it is an UID or a GID */ if ( ! strncmp("IDMAP/UID/", value, 10)) { - + /* a uid */ id->xid.type = ID_TYPE_UID; - + } else if ( ! strncmp("IDMAP/GID/", value, 10)) { - + /* a gid */ id->xid.type = ID_TYPE_GID; - + } else { - + /* a completely bogus value bail out */ goto failed; } - + id->xid.id = strtol(&value[10], &rem, 0); if (*rem != '\0') { goto failed; @@ -328,7 +327,7 @@ NTSTATUS idmap_cache_map_sid(struct idmap_cache_ctx *cache, struct id_map *id) /* make sure it is marked as not mapped by default */ id->status = ID_UNKNOWN; - + ret = idmap_cache_build_sidkey(cache, &sidkey, id); if (!NT_STATUS_IS_OK(ret)) return ret; @@ -376,7 +375,7 @@ NTSTATUS idmap_cache_map_sid(struct idmap_cache_ctx *cache, struct id_map *id) DEBUG(10,("idmap_cache_map_sid: idmap is offline\n")); goto done; } - + /* We're expired, set an error code for upper layer */ ret = NT_STATUS_SYNCHRONIZATION_REQUIRED; @@ -438,7 +437,7 @@ NTSTATUS idmap_cache_map_id(struct idmap_cache_ctx *cache, struct id_map *id) /* make sure it is marked as unknown by default */ id->status = ID_UNKNOWN; - + ret = idmap_cache_build_idkey(cache, &idkey, id); if (!NT_STATUS_IS_OK(ret)) return ret; @@ -463,7 +462,7 @@ NTSTATUS idmap_cache_map_id(struct idmap_cache_ctx *cache, struct id_map *id) /* check it is not negative */ if (strcmp("IDMAP/NEGATIVE", endptr+1) != 0) { - + DEBUG(10, ("Returning %s cache entry: key = %s, value = %s, " "timeout = %s", t > now ? "valid" : "expired", idkey, endptr+1, ctime(&t))); @@ -494,7 +493,7 @@ NTSTATUS idmap_cache_map_id(struct idmap_cache_ctx *cache, struct id_map *id) goto done; } - + /* Was a negative cache hit */ /* Ignore the negative cache when offline */ @@ -502,7 +501,6 @@ NTSTATUS idmap_cache_map_id(struct idmap_cache_ctx *cache, struct id_map *id) if ( IS_DOMAIN_OFFLINE(our_domain) ) { DEBUG(10,("idmap_cache_map_sid: idmap is offline\n")); ret = NT_STATUS_NONE_MAPPED; - goto done; } |