aboutsummaryrefslogtreecommitdiff
path: root/libpam/pam_end.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_end.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_end.c')
-rw-r--r--libpam/pam_end.c31
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 */