aboutsummaryrefslogtreecommitdiff
path: root/libpam/pam_env.c
diff options
context:
space:
mode:
authorChristian Göttsche <cgzones@googlemail.com>2023-01-30 17:55:27 +0100
committerChristian Göttsche <cgzones@googlemail.com>2023-02-28 15:13:15 +0100
commite2d01a42c16e0d074764c3e8d2f6a2e6c0ceafc4 (patch)
tree77a5a3305062243a0a9e76cd52be77a83bb0da76 /libpam/pam_env.c
parent19a29268178951988eca29a7830f24bfef300c3c (diff)
downloadpam-e2d01a42c16e0d074764c3e8d2f6a2e6c0ceafc4.tar.gz
pam-e2d01a42c16e0d074764c3e8d2f6a2e6c0ceafc4.tar.bz2
pam-e2d01a42c16e0d074764c3e8d2f6a2e6c0ceafc4.zip
libpam: make use of secure memory erasure
Non trivial changes: - erase responses in pam_get_authtok_internal() on error branch
Diffstat (limited to 'libpam/pam_env.c')
-rw-r--r--libpam/pam_env.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/libpam/pam_env.c b/libpam/pam_env.c
index 1c8403d6..bfeb57ab 100644
--- a/libpam/pam_env.c
+++ b/libpam/pam_env.c
@@ -11,6 +11,7 @@
*/
#include "pam_private.h"
+#include "pam_inline.h"
#include <string.h>
#include <stdlib.h>
@@ -100,7 +101,7 @@ void _pam_drop_env(pam_handle_t *pamh)
for (i=pamh->env->requested-1; i-- > 0; ) {
D(("dropping #%3d>%s<", i, pamh->env->list[i]));
- _pam_overwrite(pamh->env->list[i]); /* clean */
+ pam_overwrite_string(pamh->env->list[i]); /* clean */
_pam_drop(pamh->env->list[i]); /* forget */
}
pamh->env->requested = 0;
@@ -227,7 +228,7 @@ int pam_putenv(pam_handle_t *pamh, const char *name_value)
} else { /* replace old */
D(("replacing item: %s\n with: %s"
, pamh->env->list[item], name_value));
- _pam_overwrite(pamh->env->list[item]);
+ pam_overwrite_string(pamh->env->list[item]);
_pam_drop(pamh->env->list[item]);
}
@@ -261,7 +262,7 @@ int pam_putenv(pam_handle_t *pamh, const char *name_value)
*/
D(("deleting: env#%3d:[%s]", item, pamh->env->list[item]));
- _pam_overwrite(pamh->env->list[item]);
+ pam_overwrite_string(pamh->env->list[item]);
_pam_drop(pamh->env->list[item]);
--(pamh->env->requested);
D(("mmove: item[%d]+%d -> item[%d]"
@@ -341,7 +342,7 @@ static char **_copy_env(pam_handle_t *pamh)
/* out of memory */
while (dump[++i]) {
- _pam_overwrite(dump[i]);
+ pam_overwrite_string(dump[i]);
_pam_drop(dump[i]);
}
_pam_drop(dump);