diff options
author | Christian Göttsche <cgzones@googlemail.com> | 2023-01-30 17:55:27 +0100 |
---|---|---|
committer | Christian Göttsche <cgzones@googlemail.com> | 2023-02-28 15:13:15 +0100 |
commit | e2d01a42c16e0d074764c3e8d2f6a2e6c0ceafc4 (patch) | |
tree | 77a5a3305062243a0a9e76cd52be77a83bb0da76 /libpam/pam_env.c | |
parent | 19a29268178951988eca29a7830f24bfef300c3c (diff) | |
download | pam-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.c | 9 |
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); |