moduler: Move module transaction invoke handling to transaction itself

So we can reduce the generated code and add more unit tests
This commit is contained in:
Marco Trevisan (Treviño)
2023-09-25 23:08:08 +02:00
parent e0e1d2de2c
commit 6f3af6e9b2
4 changed files with 171 additions and 11 deletions

View File

@@ -257,14 +257,14 @@ func handlePamCall(pamh *C.pam_handle_t, flags C.int, argc C.int,
return C.int(pam.ErrIgnore)
}
err := moduleFunc(pam.NewModuleTransaction(pam.NativeHandle(pamh)),
pam.Flags(flags), sliceFromArgv(argc, argv))
mt := pam.NewModuleTransactionInvoker(pam.NativeHandle(pamh))
err := mt.InvokeHandler(moduleFunc, pam.Flags(flags),
sliceFromArgv(argc, argv))
if err == nil {
return 0;
return 0
}
if (pam.Flags(flags) & pam.Silent) == 0 {
if (pam.Flags(flags) & pam.Silent) == 0 && !errors.Is(err, pam.ErrIgnore) {
fmt.Fprintf(os.Stderr, "module returned error: %%v\n", err)
}