aboutsummaryrefslogtreecommitdiff
path: root/pam
diff options
context:
space:
mode:
Diffstat (limited to 'pam')
-rw-r--r--pam/pam.c3
-rw-r--r--pam/pam.go6
-rw-r--r--pam/pam.h2
3 files changed, 8 insertions, 3 deletions
diff --git a/pam/pam.c b/pam/pam.c
index aee6671..4769705 100644
--- a/pam/pam.c
+++ b/pam/pam.c
@@ -79,7 +79,8 @@ static int conversation(int num_msg, const struct pam_message** msg,
return PAM_SUCCESS;
}
-const struct pam_conv conv = {conversation, NULL};
+static const struct pam_conv conv = {conversation, NULL};
+const struct pam_conv* goConv = &conv;
void freeData(pam_handle_t* pamh, void* data, int error_status) { free(data); }
diff --git a/pam/pam.go b/pam/pam.go
index 43bfd2e..e928883 100644
--- a/pam/pam.go
+++ b/pam/pam.go
@@ -179,7 +179,11 @@ func Start(service, username string) (*Transaction, error) {
handle: nil,
status: C.PAM_SUCCESS,
}
- t.status = C.pam_start(cService, cUsername, &C.conv, &t.handle)
+ t.status = C.pam_start(
+ cService,
+ cUsername,
+ C.goConv,
+ &t.handle)
return t, (*Handle)(t).err()
}
diff --git a/pam/pam.h b/pam/pam.h
index 9f3cdb2..09afb2e 100644
--- a/pam/pam.h
+++ b/pam/pam.h
@@ -23,7 +23,7 @@
#include <security/pam_appl.h>
// Conversation that will call back into Go code when appropriate.
-const struct pam_conv conv;
+const struct pam_conv *goConv;
// CleaupFuncs are used to cleanup specific PAM data.
typedef void (*CleanupFunc)(pam_handle_t *pamh, void *data, int error_status);