summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Schneider <asn@cryptomilk.org>2020-11-04 17:21:47 +0100
committerTomáš Mráz <tmraz@redhat.com>2020-11-04 17:29:43 +0100
commit50ab1eda259ff039922b2774895f09bf0a57e078 (patch)
treeec0b85e612f14384eae02b01a966bd606c5afd7f
parent12824dd648b0668968231044ed805d1f3b212d7e (diff)
downloadlinux-pam-git-50ab1eda259ff039922b2774895f09bf0a57e078.tar.gz
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.c3
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() */