summaryrefslogtreecommitdiffstats
path: root/src/responder/common/negcache_files.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/responder/common/negcache_files.c')
-rw-r--r--src/responder/common/negcache_files.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/responder/common/negcache_files.c b/src/responder/common/negcache_files.c
index 1b9a4be43..4256186d9 100644
--- a/src/responder/common/negcache_files.c
+++ b/src/responder/common/negcache_files.c
@@ -34,8 +34,15 @@ bool is_user_local_by_name(const char *name)
char buffer[BUFFER_SIZE];
bool is_local = false;
int ret;
+ char *shortname = NULL;
- ret = getpwnam_r(name, &pwd, buffer, BUFFER_SIZE, &pwd_result);
+ ret = sss_parse_internal_fqname(NULL, name, &shortname, NULL);
+ if (ret != EOK) {
+ return false;
+ }
+
+ ret = getpwnam_r(shortname, &pwd, buffer, BUFFER_SIZE, &pwd_result);
+ talloc_free(shortname);
if (ret == EOK && pwd_result != NULL) {
DEBUG(SSSDBG_TRACE_FUNC, "User %s is a local user\n", name);
is_local = true;
@@ -69,8 +76,15 @@ bool is_group_local_by_name(const char *name)
char buffer[BUFFER_SIZE];
bool is_local = false;
int ret;
+ char *shortname = NULL;
+
+ ret = sss_parse_internal_fqname(NULL, name, &shortname, NULL);
+ if (ret != EOK) {
+ return false;
+ }
- ret = getgrnam_r(name, &grp, buffer, BUFFER_SIZE, &grp_result);
+ ret = getgrnam_r(shortname, &grp, buffer, BUFFER_SIZE, &grp_result);
+ talloc_free(shortname);
if (ret == EOK && grp_result != NULL) {
DEBUG(SSSDBG_TRACE_FUNC, "Group %s is a local group\n", name);
is_local = true;