From c9148666f5d9dd59804a3d29c59207ef067f7093 Mon Sep 17 00:00:00 2001 From: "Dmitry V. Levin" Date: Mon, 26 Dec 2011 18:10:29 +0000 Subject: pam_start: fix memory leak on error path * libpam/pam_start.c (pam_start): If _pam_make_env() or _pam_init_handlers() returned an error, release the memory allocated for pam_conv structure. Patch-by: cancel . --- libpam/pam_start.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libpam/pam_start.c b/libpam/pam_start.c index b7cd771e..328416d2 100644 --- a/libpam/pam_start.c +++ b/libpam/pam_start.c @@ -111,6 +111,7 @@ int pam_start ( (*pamh)->data = NULL; if ( _pam_make_env(*pamh) != PAM_SUCCESS ) { pam_syslog(*pamh,LOG_ERR,"pam_start: failed to initialize environment"); + _pam_drop((*pamh)->pam_conversation); _pam_drop((*pamh)->service_name); _pam_drop((*pamh)->user); _pam_drop(*pamh); @@ -127,6 +128,7 @@ int pam_start ( if ( _pam_init_handlers(*pamh) != PAM_SUCCESS ) { pam_syslog(*pamh, LOG_ERR, "pam_start: failed to initialize handlers"); _pam_drop_env(*pamh); /* purge the environment */ + _pam_drop((*pamh)->pam_conversation); _pam_drop((*pamh)->service_name); _pam_drop((*pamh)->user); _pam_drop(*pamh); -- cgit v1.2.1