aboutsummaryrefslogtreecommitdiff
path: root/pam
diff options
context:
space:
mode:
authorEric Biggers <ebiggers@google.com>2021-12-21 21:59:01 -0600
committerGitHub <noreply@github.com>2021-12-21 21:59:01 -0600
commitaa7e4237024f5cf6bb2817ef997dbc18197b30a6 (patch)
tree2aa1240435ff91f25b0f05923e80cb8b299ef337 /pam
parentce477ef12ac46c4df0152d43dae5d6e58772b120 (diff)
parentb7399903540c95e89f0ee427fed1de07301fbd93 (diff)
Merge pull request #334 from ebiggers/warn-on-chauthtok-fail
pam_fscrypt: warn user if OLDAUTHTOK not given in chauthtok
Diffstat (limited to 'pam')
-rw-r--r--pam/pam.c5
-rw-r--r--pam/pam.go7
-rw-r--r--pam/pam.h3
3 files changed, 15 insertions, 0 deletions
diff --git a/pam/pam.c b/pam/pam.c
index 1479dfa..1d6aefe 100644
--- a/pam/pam.c
+++ b/pam/pam.c
@@ -20,6 +20,7 @@
#include "pam.h"
#include <security/pam_appl.h>
+#include <security/pam_ext.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -107,3 +108,7 @@ void freeSecret(pam_handle_t* pamh, char* data, int error_status) {
munlock(data, size);
free(data);
}
+
+void infoMessage(pam_handle_t* pamh, const char* message) {
+ pam_info(pamh, "%s", message);
+}
diff --git a/pam/pam.go b/pam/pam.go
index 54a60e2..f79e2d4 100644
--- a/pam/pam.go
+++ b/pam/pam.go
@@ -166,6 +166,13 @@ func (h *Handle) err() error {
return errors.New(s)
}
+// InfoMessage sends a message to the application using pam_info().
+func (h *Handle) InfoMessage(message string) {
+ cMessage := C.CString(message)
+ defer C.free(unsafe.Pointer(cMessage))
+ C.infoMessage(h.handle, cMessage)
+}
+
// Transaction represents a wrapped pam_handle_t type created with pam_start
// form an application.
type Transaction Handle
diff --git a/pam/pam.h b/pam/pam.h
index 54bb193..3cb609a 100644
--- a/pam/pam.h
+++ b/pam/pam.h
@@ -41,4 +41,7 @@ void *copyIntoSecret(void *data);
// CleaupFunc that Zeros wipes a C string and unlocks and frees its memory.
void freeSecret(pam_handle_t *pamh, char *data, int error_status);
+// Sends a message to the application using pam_info().
+void infoMessage(pam_handle_t *pamh, const char *message);
+
#endif // FSCRYPT_PAM_H