|
|
bbbcbd |
diff -up ecryptfs-utils-87/src/pam_ecryptfs/pam_ecryptfs.c.fixgid ecryptfs-utils-87/src/pam_ecryptfs/pam_ecryptfs.c
|
|
|
be2a3c |
--- ecryptfs-utils-87/src/pam_ecryptfs/pam_ecryptfs.c.fixgid 2011-07-21 13:35:47.968581526 +0200
|
|
|
be2a3c |
+++ ecryptfs-utils-87/src/pam_ecryptfs/pam_ecryptfs.c 2011-07-21 13:37:08.411188936 +0200
|
|
|
bbbcbd |
@@ -217,7 +217,7 @@ PAM_EXTERN int pam_sm_authenticate(pam_h
|
|
|
bbbcbd |
}
|
|
|
bbbcbd |
out_child:
|
|
|
bbbcbd |
free(auth_tok_sig);
|
|
|
bbbcbd |
- exit(0);
|
|
|
bbbcbd |
+ _exit(0);
|
|
|
bbbcbd |
}
|
|
|
bbbcbd |
tmp_pid = waitpid(child_pid, NULL, 0);
|
|
|
bbbcbd |
if (tmp_pid == -1)
|
|
|
bbbcbd |
@@ -309,7 +309,7 @@ static int private_dir(pam_handle_t *pam
|
|
|
bbbcbd |
pwd->pw_dir) < 0) || recorded == NULL) {
|
|
|
bbbcbd |
syslog(LOG_ERR,
|
|
|
bbbcbd |
"Error allocating memory for recorded name");
|
|
|
bbbcbd |
- return 1;
|
|
|
bbbcbd |
+ _exit(255);
|
|
|
bbbcbd |
}
|
|
|
bbbcbd |
if (stat(recorded, &s) != 0 && stat("/usr/share/ecryptfs-utils/ecryptfs-record-passphrase", &s) == 0) {
|
|
|
bbbcbd |
/* User has not recorded their passphrase */
|
|
|
be2a3c |
@@ -322,25 +322,27 @@ static int private_dir(pam_handle_t *pam
|
|
|
bbbcbd |
/* User does not want to auto-mount */
|
|
|
bbbcbd |
syslog(LOG_INFO,
|
|
|
bbbcbd |
"Skipping automatic eCryptfs mount");
|
|
|
bbbcbd |
- return 0;
|
|
|
bbbcbd |
+ _exit(0);
|
|
|
bbbcbd |
}
|
|
|
bbbcbd |
/* run mount.ecryptfs_private as the user */
|
|
|
bbbcbd |
setresuid(pwd->pw_uid, pwd->pw_uid, pwd->pw_uid);
|
|
|
bbbcbd |
execl("/sbin/mount.ecryptfs_private",
|
|
|
bbbcbd |
"mount.ecryptfs_private", NULL);
|
|
|
be2a3c |
+ syslog(LOG_ERR,"unable to execute mount.ecryptfs_private : %m");
|
|
|
bbbcbd |
} else {
|
|
|
bbbcbd |
if (stat(autofile, &s) != 0) {
|
|
|
bbbcbd |
/* User does not want to auto-unmount */
|
|
|
bbbcbd |
syslog(LOG_INFO,
|
|
|
bbbcbd |
"Skipping automatic eCryptfs unmount");
|
|
|
bbbcbd |
- return 0;
|
|
|
bbbcbd |
+ _exit(0);
|
|
|
bbbcbd |
}
|
|
|
bbbcbd |
/* run umount.ecryptfs_private as the user */
|
|
|
bbbcbd |
setresuid(pwd->pw_uid, pwd->pw_uid, pwd->pw_uid);
|
|
|
bbbcbd |
execl("/sbin/umount.ecryptfs_private",
|
|
|
bbbcbd |
"umount.ecryptfs_private", NULL);
|
|
|
be2a3c |
+ syslog(LOG_ERR,"unable to execute umount.ecryptfs_private : %m");
|
|
|
bbbcbd |
}
|
|
|
be2a3c |
- return 1;
|
|
|
be2a3c |
+ _exit(255);
|
|
|
bbbcbd |
} else {
|
|
|
be2a3c |
waitpid(pid, &rc, 0);
|
|
|
be2a3c |
goto out;
|
|
|
bbbcbd |
@@ -482,7 +484,7 @@ PAM_EXTERN int pam_sm_chauthtok(pam_hand
|
|
|
bbbcbd |
goto out_child;
|
|
|
bbbcbd |
}
|
|
|
bbbcbd |
out_child:
|
|
|
bbbcbd |
- exit(0);
|
|
|
bbbcbd |
+ _exit(0);
|
|
|
bbbcbd |
}
|
|
|
bbbcbd |
if ((tmp_pid = waitpid(child_pid, NULL, 0)) == -1)
|
|
|
bbbcbd |
syslog(LOG_WARNING,
|