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_end.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_end.c')
-rw-r--r-- | libpam/pam_end.c | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/libpam/pam_end.c b/libpam/pam_end.c index 406b1478..9179a915 100644 --- a/libpam/pam_end.c +++ b/libpam/pam_end.c @@ -5,6 +5,7 @@ */ #include "pam_private.h" +#include "pam_inline.h" #include <stdlib.h> @@ -41,34 +42,34 @@ int pam_end(pam_handle_t *pamh, int pam_status) _pam_drop_env(pamh); /* purge the environment */ - _pam_overwrite(pamh->authtok); /* blank out old token */ + pam_overwrite_string(pamh->authtok); /* blank out old token */ _pam_drop(pamh->authtok); - _pam_overwrite(pamh->oldauthtok); /* blank out old token */ + pam_overwrite_string(pamh->oldauthtok); /* blank out old token */ _pam_drop(pamh->oldauthtok); - _pam_overwrite(pamh->former.prompt); + pam_overwrite_string(pamh->former.prompt); _pam_drop(pamh->former.prompt); /* drop saved prompt */ - _pam_overwrite(pamh->service_name); + pam_overwrite_string(pamh->service_name); _pam_drop(pamh->service_name); - _pam_overwrite(pamh->user); + pam_overwrite_string(pamh->user); _pam_drop(pamh->user); - _pam_overwrite(pamh->confdir); + pam_overwrite_string(pamh->confdir); _pam_drop(pamh->confdir); - _pam_overwrite(pamh->prompt); + pam_overwrite_string(pamh->prompt); _pam_drop(pamh->prompt); /* prompt for pam_get_user() */ - _pam_overwrite(pamh->tty); + pam_overwrite_string(pamh->tty); _pam_drop(pamh->tty); - _pam_overwrite(pamh->rhost); + pam_overwrite_string(pamh->rhost); _pam_drop(pamh->rhost); - _pam_overwrite(pamh->ruser); + pam_overwrite_string(pamh->ruser); _pam_drop(pamh->ruser); _pam_drop(pamh->pam_conversation); @@ -76,16 +77,16 @@ int pam_end(pam_handle_t *pamh, int pam_status) _pam_drop(pamh->former.substates); - _pam_overwrite(pamh->xdisplay); + pam_overwrite_string(pamh->xdisplay); _pam_drop(pamh->xdisplay); - _pam_overwrite(pamh->xauth.name); + pam_overwrite_string(pamh->xauth.name); _pam_drop(pamh->xauth.name); - _pam_overwrite_n(pamh->xauth.data, (unsigned int)pamh->xauth.datalen); + pam_overwrite_n(pamh->xauth.data, (unsigned int)pamh->xauth.datalen); _pam_drop(pamh->xauth.data); - _pam_overwrite_n((char *)&pamh->xauth, sizeof(pamh->xauth)); + pam_overwrite_object(&pamh->xauth); - _pam_overwrite(pamh->authtok_type); + pam_overwrite_string(pamh->authtok_type); _pam_drop(pamh->authtok_type); /* and finally liberate the memory for the pam_handle structure */ |