File gnome-keyring-pam-stop-passwd.patch of Package gnome-keyring

Index: gnome-keyring-2.24.1/pam/gkr-pam-module.c
===================================================================
--- gnome-keyring-2.24.1.orig/pam/gkr-pam-module.c
+++ gnome-keyring-2.24.1/pam/gkr-pam-module.c
@@ -925,7 +925,7 @@ pam_chauthtok_preliminary (pam_handle_t
 }
 
 static int
-pam_chauthtok_update (pam_handle_t *ph, struct passwd *pwd)
+pam_chauthtok_update (pam_handle_t *ph, struct passwd *pwd, uint args)
 {
 	const char *password, *original;
 	int ret, started_daemon = 0;
@@ -967,6 +967,12 @@ pam_chauthtok_update (pam_handle_t *ph,
 		return ret;
 	
 	ret = change_keyring_password (ph, pwd, password, original);
+
+	/* if not auto_start, kill the daemon if we started it: we don't want
+	 * it to stay */
+	if (started_daemon && !(args & ARG_AUTO_START))
+		stop_daemon (ph, pwd);
+
 	if (ret != PAM_SUCCESS)
 		return ret;
 		
@@ -978,8 +984,11 @@ pam_sm_chauthtok (pam_handle_t *ph, int
 {
 	const char *user;
 	struct passwd *pwd;
+	uint args;
 	int ret;
 	
+	args = parse_args (argc, argv);
+
 	/* Figure out and/or prompt for the user name */
 	ret = pam_get_user (ph, &user, NULL);
 	if (ret != PAM_SUCCESS) {
@@ -997,7 +1006,7 @@ pam_sm_chauthtok (pam_handle_t *ph, int
 	if (flags & PAM_PRELIM_CHECK) 
 		return pam_chauthtok_preliminary (ph, pwd);
 	else if (flags & PAM_UPDATE_AUTHTOK)
-		return pam_chauthtok_update (ph, pwd);
+		return pam_chauthtok_update (ph, pwd, args);
 	else 
 		return PAM_IGNORE;
 }
openSUSE Build Service is sponsored by