summaryrefslogtreecommitdiffstats
path: root/src/responder/common/negcache.c
diff options
context:
space:
mode:
authorSumit Bose <sbose@redhat.com>2015-07-22 14:21:52 +0200
committerJakub Hrozek <jhrozek@redhat.com>2015-07-27 22:03:42 +0200
commite1aed98d7c195f844ac8e85050d04f3ca5f899b3 (patch)
treee19c121790c2af8c4f08df741c5be6f89f6e00a7 /src/responder/common/negcache.c
parent7c18b65dbdeb584a946c055f2db3814544b17232 (diff)
downloadsssd-e1aed98d7c195f844ac8e85050d04f3ca5f899b3.tar.gz
sssd-e1aed98d7c195f844ac8e85050d04f3ca5f899b3.tar.xz
sssd-e1aed98d7c195f844ac8e85050d04f3ca5f899b3.zip
negcache: allow domain name for UID and GID
Related to https://fedorahosted.org/sssd/ticket/2731 Reviewed-by: Jakub Hrozek <jhrozek@redhat.com>
Diffstat (limited to 'src/responder/common/negcache.c')
-rw-r--r--src/responder/common/negcache.c40
1 files changed, 32 insertions, 8 deletions
diff --git a/src/responder/common/negcache.c b/src/responder/common/negcache.c
index 64270f467..fc482c411 100644
--- a/src/responder/common/negcache.c
+++ b/src/responder/common/negcache.c
@@ -376,12 +376,18 @@ int sss_ncache_check_service_port(struct sss_nc_ctx *ctx, int ttl,
-int sss_ncache_check_uid(struct sss_nc_ctx *ctx, int ttl, uid_t uid)
+int sss_ncache_check_uid(struct sss_nc_ctx *ctx, int ttl,
+ struct sss_domain_info *dom, uid_t uid)
{
char *str;
int ret;
- str = talloc_asprintf(ctx, "%s/%"SPRIuid, NC_UID_PREFIX, uid);
+ if (dom != NULL) {
+ str = talloc_asprintf(ctx, "%s/%s/%"SPRIuid, NC_UID_PREFIX, dom->name,
+ uid);
+ } else {
+ str = talloc_asprintf(ctx, "%s/%"SPRIuid, NC_UID_PREFIX, uid);
+ }
if (!str) return ENOMEM;
ret = sss_ncache_check_str(ctx, str, ttl);
@@ -390,12 +396,18 @@ int sss_ncache_check_uid(struct sss_nc_ctx *ctx, int ttl, uid_t uid)
return ret;
}
-int sss_ncache_check_gid(struct sss_nc_ctx *ctx, int ttl, gid_t gid)
+int sss_ncache_check_gid(struct sss_nc_ctx *ctx, int ttl,
+ struct sss_domain_info *dom, gid_t gid)
{
char *str;
int ret;
- str = talloc_asprintf(ctx, "%s/%"SPRIgid, NC_GID_PREFIX, gid);
+ if (dom != NULL) {
+ str = talloc_asprintf(ctx, "%s/%s/%"SPRIgid, NC_GID_PREFIX, dom->name,
+ gid);
+ } else {
+ str = talloc_asprintf(ctx, "%s/%"SPRIgid, NC_GID_PREFIX, gid);
+ }
if (!str) return ENOMEM;
ret = sss_ncache_check_str(ctx, str, ttl);
@@ -522,12 +534,18 @@ int sss_ncache_set_netgr(struct sss_nc_ctx *ctx, bool permanent,
return sss_ncache_set_ent(ctx, permanent, dom, name, sss_ncache_set_netgr_int);
}
-int sss_ncache_set_uid(struct sss_nc_ctx *ctx, bool permanent, uid_t uid)
+int sss_ncache_set_uid(struct sss_nc_ctx *ctx, bool permanent,
+ struct sss_domain_info *dom, uid_t uid)
{
char *str;
int ret;
- str = talloc_asprintf(ctx, "%s/%"SPRIuid, NC_UID_PREFIX, uid);
+ if (dom != NULL) {
+ str = talloc_asprintf(ctx, "%s/%s/%"SPRIuid, NC_UID_PREFIX, dom->name,
+ uid);
+ } else {
+ str = talloc_asprintf(ctx, "%s/%"SPRIuid, NC_UID_PREFIX, uid);
+ }
if (!str) return ENOMEM;
ret = sss_ncache_set_str(ctx, str, permanent);
@@ -536,12 +554,18 @@ int sss_ncache_set_uid(struct sss_nc_ctx *ctx, bool permanent, uid_t uid)
return ret;
}
-int sss_ncache_set_gid(struct sss_nc_ctx *ctx, bool permanent, gid_t gid)
+int sss_ncache_set_gid(struct sss_nc_ctx *ctx, bool permanent,
+ struct sss_domain_info *dom, gid_t gid)
{
char *str;
int ret;
- str = talloc_asprintf(ctx, "%s/%"SPRIgid, NC_GID_PREFIX, gid);
+ if (dom != NULL) {
+ str = talloc_asprintf(ctx, "%s/%s/%"SPRIgid, NC_GID_PREFIX, dom->name,
+ gid);
+ } else {
+ str = talloc_asprintf(ctx, "%s/%"SPRIgid, NC_GID_PREFIX, gid);
+ }
if (!str) return ENOMEM;
ret = sss_ncache_set_str(ctx, str, permanent);