summaryrefslogtreecommitdiff
path: root/transaction.go
diff options
context:
space:
mode:
authorMarco Trevisan (Treviño) <[email protected]>2023-11-07 11:51:27 +0200
committerMarco Trevisan (Treviño) <[email protected]>2023-11-30 01:16:38 +0100
commit44c364e364c1eb5ccdfad3b11f574787152adbd2 (patch)
tree9ac079f8af745a9ace3724c36d90d0027c4fa042 /transaction.go
parenta85a609bbe4f52a2f19a24bcfbfcdb3c23decd45 (diff)
ci: Use golang-ci linter
Diffstat (limited to 'transaction.go')
-rw-r--r--transaction.go14
1 files changed, 10 insertions, 4 deletions
diff --git a/transaction.go b/transaction.go
index 96bff63..fcba3d5 100644
--- a/transaction.go
+++ b/transaction.go
@@ -94,6 +94,7 @@ func cbPAMConv(s C.int, msg *C.char, c C.uintptr_t) (*C.char, C.int) {
var err error
v := cgo.Handle(c).Value()
style := Style(s)
+ var handler ConversationHandler
switch cb := v.(type) {
case BinaryConversationHandler:
if style == BinaryPrompt {
@@ -102,15 +103,18 @@ func cbPAMConv(s C.int, msg *C.char, c C.uintptr_t) (*C.char, C.int) {
return nil, C.PAM_CONV_ERR
}
return (*C.char)(C.CBytes(bytes)), C.PAM_SUCCESS
- } else {
- r, err = cb.RespondPAM(style, C.GoString(msg))
}
+ handler = cb
case ConversationHandler:
if style == BinaryPrompt {
return nil, C.PAM_AUTHINFO_UNAVAIL
}
- r, err = cb.RespondPAM(style, C.GoString(msg))
+ handler = cb
}
+ if handler == nil {
+ return nil, C.PAM_CONV_ERR
+ }
+ r, err = handler.RespondPAM(style, C.GoString(msg))
if err != nil {
return nil, C.PAM_CONV_ERR
}
@@ -118,6 +122,8 @@ func cbPAMConv(s C.int, msg *C.char, c C.uintptr_t) (*C.char, C.int) {
}
// Transaction is the application's handle for a PAM transaction.
+//
+//nolint:errname
type Transaction struct {
handle *C.pam_handle_t
conv *C.struct_pam_conv
@@ -195,7 +201,7 @@ func start(service, user string, handler ConversationHandler, confDir string) (*
}
func (t *Transaction) Error() string {
- return C.GoString(C.pam_strerror(t.handle, C.int(t.status)))
+ return C.GoString(C.pam_strerror(t.handle, t.status))
}
// Item is a an PAM information type.