diff options
author | Tomas Mraz <tmraz@redhat.com> | 2012-12-19 17:51:41 +0100 |
---|---|---|
committer | Tomas Mraz <tmraz@redhat.com> | 2012-12-19 17:51:41 +0100 |
commit | a9fd3582f8ed032ee91163eac65a80db80bc287f (patch) | |
tree | 803165b91031e2e5dc17c559172c97571a3dea1f /src | |
parent | 08e4493a28f573149a26b90a293a22409cfc0720 (diff) | |
download | libpwquality-a9fd3582f8ed032ee91163eac65a80db80bc287f.tar.gz |
Always properly free the pwquality settings.
Diffstat (limited to 'src')
-rw-r--r-- | src/pam_pwquality.c | 7 | ||||
-rw-r--r-- | src/pwmake.c | 2 | ||||
-rw-r--r-- | src/pwscore.c | 2 |
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"), |