diff options
Diffstat (limited to 'compiler-rt/test/sanitizer_common/TestCases/NetBSD/getgroupmembership.cc')
| -rw-r--r-- | compiler-rt/test/sanitizer_common/TestCases/NetBSD/getgroupmembership.cc | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/compiler-rt/test/sanitizer_common/TestCases/NetBSD/getgroupmembership.cc b/compiler-rt/test/sanitizer_common/TestCases/NetBSD/getgroupmembership.cc new file mode 100644 index 00000000000..ee27ad6cf36 --- /dev/null +++ b/compiler-rt/test/sanitizer_common/TestCases/NetBSD/getgroupmembership.cc @@ -0,0 +1,30 @@ +// RUN: %clangxx -O0 -g %s -o %t && %run %t + +#include <stdlib.h> +#include <unistd.h> +#include <grp.h> + +int main(void) { + gid_t *groups; + gid_t nobody; + int ngroups; + int maxgrp; + + maxgrp = sysconf(_SC_NGROUPS_MAX); + groups = (gid_t *)malloc(maxgrp * sizeof(gid_t)); + if (!groups) + exit(1); + + if (gid_from_group("nobody", &nobody) == -1) + exit(1); + + if (getgroupmembership("nobody", nobody, groups, maxgrp, &ngroups)) + exit(1); + + if (groups && ngroups) { + free(groups); + exit(0); + } + + return -1; +} |

