github/test: Run tests with address sanitizer

We have lots of cgo interaction here so better to check things fully.

This also requires manually checking for leaks, so add support for this.
This commit is contained in:
Marco Trevisan (Treviño)
2023-10-19 03:02:46 +02:00
parent 04ad7bdc73
commit eac1f2d85d
5 changed files with 89 additions and 4 deletions

31
utils.go Normal file
View File

@@ -0,0 +1,31 @@
// Package pam provides a wrapper for the PAM application API.
package pam
/*
#ifdef __SANITIZE_ADDRESS__
#include <sanitizer/lsan_interface.h>
#endif
static inline void
maybe_do_leak_check (void)
{
#ifdef __SANITIZE_ADDRESS__
__lsan_do_leak_check();
#endif
}
*/
import "C"
import (
"os"
"runtime"
"time"
)
func maybeDoLeakCheck() {
runtime.GC()
time.Sleep(time.Millisecond * 20)
if os.Getenv("GO_PAM_SKIP_LEAK_CHECK") == "" {
C.maybe_do_leak_check()
}
}