9471b77
diff -up ecryptfs-utils-108/src/pam_ecryptfs/pam_ecryptfs.c.fixpamfork ecryptfs-utils-108/src/pam_ecryptfs/pam_ecryptfs.c
9471b77
--- ecryptfs-utils-108/src/pam_ecryptfs/pam_ecryptfs.c.fixpamfork	2015-08-11 14:43:58.438825091 +0200
9471b77
+++ ecryptfs-utils-108/src/pam_ecryptfs/pam_ecryptfs.c	2015-08-11 14:43:58.439825089 +0200
0d13c93
@@ -253,7 +253,7 @@ PAM_EXTERN int pam_sm_authenticate(pam_h
bbbcbd5
 		}
bbbcbd5
 out_child:
bbbcbd5
 		free(auth_tok_sig);
bbbcbd5
-		exit(0);
bbbcbd5
+		_exit(0);
bbbcbd5
 	}
bbbcbd5
 	tmp_pid = waitpid(child_pid, NULL, 0);
bbbcbd5
 	if (tmp_pid == -1)
0d13c93
@@ -349,7 +349,7 @@ static int private_dir(pam_handle_t *pam
7731a01
 			    "%s/.ecryptfs/.wrapped-passphrase.recorded",
bbbcbd5
 			    pwd->pw_dir) < 0) || recorded == NULL) {
7731a01
 				syslog(LOG_ERR, "pam_ecryptfs: Error allocating memory for recorded name");
6154d2a
-				exit(1);
bbbcbd5
+				_exit(255);
bbbcbd5
 			}
bbbcbd5
 			if (stat(recorded, &s) != 0 && stat("/usr/share/ecryptfs-utils/ecryptfs-record-passphrase", &s) == 0) {
bbbcbd5
 				/* User has not recorded their passphrase */
0d13c93
@@ -362,33 +362,35 @@ static int private_dir(pam_handle_t *pam
7731a01
 			if (stat(autofile, &s) != 0) {
bbbcbd5
 				/* User does not want to auto-mount */
7731a01
 				syslog(LOG_DEBUG, "pam_ecryptfs: Skipping automatic eCryptfs mount");
6154d2a
-				exit(0);
bbbcbd5
+				_exit(0);
bbbcbd5
 			}
538c2f1
 			clearenv();
538c2f1
 			if (setgroups(1, &pwd->pw_gid) < 0 || setgid(pwd->pw_gid) < 0)
0d13c93
-				exit(-1);
0d13c93
+				_exit(-1);
bbbcbd5
 			/* run mount.ecryptfs_private as the user */
538c2f1
 			if (setresuid(pwd->pw_uid, pwd->pw_uid, pwd->pw_uid) < 0)
0d13c93
-				exit(-1);
0d13c93
+				_exit(-1);
bbbcbd5
 			execl("/sbin/mount.ecryptfs_private",
bbbcbd5
 			      "mount.ecryptfs_private", NULL);
0d13c93
+			syslog(LOG_ERR, "unable to execute mount.ecryptfs_private : %m");
bbbcbd5
 		} else {
bbbcbd5
 			if (stat(autofile, &s) != 0) {
bbbcbd5
 				/* User does not want to auto-unmount */
7731a01
 				syslog(LOG_DEBUG, "pam_ecryptfs: Skipping automatic eCryptfs unmount");
6154d2a
-				exit(0);
bbbcbd5
+				_exit(0);
bbbcbd5
 			}
538c2f1
 			clearenv();
538c2f1
 			if (setgroups(1, &pwd->pw_gid) < 0 || setgid(pwd->pw_gid) < 0)
0d13c93
-				exit(-1);
0d13c93
+				_exit(-1);
bbbcbd5
 			/* run umount.ecryptfs_private as the user */
538c2f1
 			if (setresuid(pwd->pw_uid, pwd->pw_uid, pwd->pw_uid) < 0)
0d13c93
-				exit(-1);
0d13c93
+				_exit(-1);
bbbcbd5
 			execl("/sbin/umount.ecryptfs_private",
9471b77
 			      "umount.ecryptfs_private", "-d", NULL);
6154d2a
-			exit(1);
0d13c93
+			syslog(LOG_ERR, "unable to execute umount.ecryptfs_private : %m");
9471b77
+			_exit(1);
bbbcbd5
 		}
6154d2a
-		exit(1);
9471b77
+		_exit(1);
bbbcbd5
 	} else {
be2a3c9
 		waitpid(pid, &rc, 0);
6154d2a
 	}
0d13c93
@@ -536,7 +538,7 @@ PAM_EXTERN int pam_sm_chauthtok(pam_hand
bbbcbd5
 			goto out_child;
bbbcbd5
 		}
bbbcbd5
 out_child:
bbbcbd5
-		exit(0);
bbbcbd5
+		_exit(0);
bbbcbd5
 	}
bbbcbd5
 	if ((tmp_pid = waitpid(child_pid, NULL, 0)) == -1)
7731a01
 		syslog(LOG_WARNING, "pam_ecryptfs: waitpid() returned with error condition\n");