pam_selinux: canonicalize user name
authorTomas Mraz <tmraz@fedoraproject.org>
Tue, 11 Mar 2014 08:59:12 +0000 (09:59 +0100)
committerTomas Mraz <tmraz@fedoraproject.org>
Tue, 11 Mar 2014 08:59:12 +0000 (09:59 +0100)
SELinux expects canonical user name for example without domain component.

* modules/pam_selinux/pam_selinux.c (compute_exec_context): Canonicalize user name with pam_modutil_getpwnam().

modules/pam_selinux/pam_selinux.c

index b96cc236f8fa1bdf7629e5a53d9ee406ed661b8f..b2a75e02b149b50d99a5f24200f52d12f5872a7c 100644 (file)
@@ -491,12 +491,17 @@ compute_exec_context(pam_handle_t *pamh, module_data_t *data,
   char *level = NULL;
   security_context_t *contextlist = NULL;
   int num_contexts = 0;
+  const struct passwd *pwd;
 
   if (!(username = get_item(pamh, PAM_USER))) {
     pam_syslog(pamh, LOG_ERR, "Cannot obtain the user name");
     return PAM_USER_UNKNOWN;
   }
 
+  if ((pwd = pam_modutil_getpwnam(pamh, username)) != NULL) {
+    username = pwd->pw_name;
+  } /* ignore error and keep using original username */
+
   /* compute execute context */
 #ifdef HAVE_GETSEUSER
   if (!(service = get_item(pamh, PAM_SERVICE))) {