summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTomas Mraz <tmraz@redhat.com>2012-12-19 17:51:41 +0100
committerTomas Mraz <tmraz@redhat.com>2012-12-19 17:51:41 +0100
commita9fd3582f8ed032ee91163eac65a80db80bc287f (patch)
tree803165b91031e2e5dc17c559172c97571a3dea1f /src
parent08e4493a28f573149a26b90a293a22409cfc0720 (diff)
downloadlibpwquality-a9fd3582f8ed032ee91163eac65a80db80bc287f.tar.gz
Always properly free the pwquality settings.
Diffstat (limited to 'src')
-rw-r--r--src/pam_pwquality.c7
-rw-r--r--src/pwmake.c2
-rw-r--r--src/pwscore.c2
3 files changed, 11 insertions, 0 deletions
diff --git a/src/pam_pwquality.c b/src/pam_pwquality.c
index 82104ee..ac7e826 100644
--- a/src/pam_pwquality.c
+++ b/src/pam_pwquality.c
@@ -176,6 +176,7 @@ pam_sm_chauthtok(pam_handle_t *pamh, int flags,
* We cannot do that, since the original path is compiled
* into the cracklib library and we don't know it.
*/
+ pwquality_free_settings(options.pwq);
return PAM_SUCCESS;
} else if (flags & PAM_UPDATE_AUTHTOK) {
int retval;
@@ -187,6 +188,7 @@ pam_sm_chauthtok(pam_handle_t *pamh, int flags,
if (retval != PAM_SUCCESS || user == NULL) {
if (ctrl & PAM_DEBUG_ARG)
pam_syslog(pamh, LOG_ERR, "Can not get username");
+ pwquality_free_settings(options.pwq);
return PAM_AUTHTOK_ERR;
}
@@ -218,6 +220,7 @@ pam_sm_chauthtok(pam_handle_t *pamh, int flags,
pam_strerror(pamh, retval));
continue;
} else if (newtoken == NULL) { /* user aborted password change, quit */
+ pwquality_free_settings(options.pwq);
return PAM_AUTHTOK_ERR;
}
@@ -255,12 +258,15 @@ pam_sm_chauthtok(pam_handle_t *pamh, int flags,
pam_set_item(pamh, PAM_AUTHTOK, NULL);
continue;
} else if (newtoken == NULL) { /* user aborted password change, quit */
+ pwquality_free_settings(options.pwq);
return PAM_AUTHTOK_ERR;
}
+ pwquality_free_settings(options.pwq);
return PAM_SUCCESS;
}
+ pwquality_free_settings(options.pwq);
pam_set_item (pamh, PAM_AUTHTOK, NULL);
/* if we have only one try, we can use the real reason,
@@ -270,6 +276,7 @@ pam_sm_chauthtok(pam_handle_t *pamh, int flags,
else
return retval;
} else {
+ pwquality_free_settings(options.pwq);
if (ctrl & PAM_DEBUG_ARG)
pam_syslog(pamh, LOG_NOTICE, "UNKNOWN flags setting %02X",flags);
}
diff --git a/src/pwmake.c b/src/pwmake.c
index 3372169..5b8cfb8 100644
--- a/src/pwmake.c
+++ b/src/pwmake.c
@@ -52,10 +52,12 @@ main(int argc, char *argv[])
if ((rv = pwquality_read_config(pwq, NULL, &auxerror)) != 0) {
fprintf(stderr, "Error: %s\n", pwquality_strerror(NULL, 0, rv, auxerror));
+ pwquality_free_settings(pwq);
exit(3);
}
rv = pwquality_generate(pwq, bits, &password);
+ pwquality_free_settings(pwq);
if (rv != 0) {
fprintf(stderr, "Error: %s\n", pwquality_strerror(NULL, 0, rv, NULL));
diff --git a/src/pwscore.c b/src/pwscore.c
index f3a9210..219a175 100644
--- a/src/pwscore.c
+++ b/src/pwscore.c
@@ -61,11 +61,13 @@ main(int argc, char *argv[])
}
if ((rv=pwquality_read_config(pwq, NULL, &auxerror)) != 0) {
+ pwquality_free_settings(pwq);
fprintf(stderr, _("Error: %s\n"), pwquality_strerror(NULL, 0, rv, auxerror));
exit(3);
}
rv = pwquality_check(pwq, buf, NULL, user, &auxerror);
+ pwquality_free_settings(pwq);
if (rv < 0) {
fprintf(stderr, _("Password quality check failed:\n %s\n"),