in pam.go [51:59]
func sliceFromArgv(argc C.int, argv **C.char) []string {
r := make([]string, 0, argc)
for i := 0; i < int(argc); i++ {
s := C.string_from_argv(C.int(i), argv)
defer C.free(unsafe.Pointer(s))
r = append(r, C.GoString(s))
}
return r
}