diff options
author | Andreas Schneider <asn@cryptomilk.org> | 2020-11-04 17:21:47 +0100 |
---|---|---|
committer | Tomáš Mráz <tmraz@redhat.com> | 2020-11-04 17:29:43 +0100 |
commit | 50ab1eda259ff039922b2774895f09bf0a57e078 (patch) | |
tree | ec0b85e612f14384eae02b01a966bd606c5afd7f | |
parent | 12824dd648b0668968231044ed805d1f3b212d7e (diff) | |
download | pam-50ab1eda259ff039922b2774895f09bf0a57e078.tar.gz pam-50ab1eda259ff039922b2774895f09bf0a57e078.tar.bz2 pam-50ab1eda259ff039922b2774895f09bf0a57e078.zip |
libpam: Fix memory leak with pam_start_confdir()
Found with AddressSanitzer in pam_wrapper tests.
==985738== 44 bytes in 4 blocks are definitely lost in loss record 18 of 18
==985738== at 0x4839809: malloc (vg_replace_malloc.c:307)
==985738== by 0x48957E1: _pam_strdup (pam_misc.c:129)
==985738== by 0x489851B: _pam_start_internal (pam_start.c:85)
==985738== by 0x4849C8C: libpam_pam_start_confdir (pam_wrapper.c:418)
==985738== by 0x484AF94: pwrap_pam_start (pam_wrapper.c:1461)
==985738== by 0x484AFEE: pam_start (pam_wrapper.c:1483)
==985738== by 0x401723: setup_noconv (test_pam_wrapper.c:189)
==985738== by 0x4889E82: ??? (in /usr/lib64/libcmocka.so.0.7.0)
==985738== by 0x488A444: _cmocka_run_group_tests (in /usr/lib64/libcmocka.so.0.7.0)
==985738== by 0x403EE5: main (test_pam_wrapper.c:1059)
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
-rw-r--r-- | libpam/pam_end.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/libpam/pam_end.c b/libpam/pam_end.c index 942253d8..406b1478 100644 --- a/libpam/pam_end.c +++ b/libpam/pam_end.c @@ -56,6 +56,9 @@ int pam_end(pam_handle_t *pamh, int pam_status) _pam_overwrite(pamh->user); _pam_drop(pamh->user); + _pam_overwrite(pamh->confdir); + _pam_drop(pamh->confdir); + _pam_overwrite(pamh->prompt); _pam_drop(pamh->prompt); /* prompt for pam_get_user() */ |