summaryrefslogtreecommitdiff
path: root/test/sanitizer_common
diff options
context:
space:
mode:
authorKamil Rytarowski <n54@gmx.com>2018-02-27 02:33:30 +0000
committerKamil Rytarowski <n54@gmx.com>2018-02-27 02:33:30 +0000
commita3d3defff92476dc862affc7ab4ca8acd0408852 (patch)
tree70d01b10d63c375e6db00864d2cadbb05e1a0bff /test/sanitizer_common
parent2332b74dc3067b27a5577ff203789c41d7ca09d8 (diff)
Add new interceptors: getnetent(3) family
Summary: getnetent, getnetbyaddr, getnetbyname - get network entry Reuse them on NetBSD. Sponsored by <The NetBSD Foundation> Reviewers: joerg, vitalybuka Reviewed By: vitalybuka Subscribers: llvm-commits, kubamracek, #sanitizers Tags: #sanitizers Differential Revision: https://reviews.llvm.org/D43543 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@326163 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/sanitizer_common')
-rw-r--r--test/sanitizer_common/TestCases/NetBSD/netent.cc84
1 files changed, 84 insertions, 0 deletions
diff --git a/test/sanitizer_common/TestCases/NetBSD/netent.cc b/test/sanitizer_common/TestCases/NetBSD/netent.cc
new file mode 100644
index 000000000..b574a9310
--- /dev/null
+++ b/test/sanitizer_common/TestCases/NetBSD/netent.cc
@@ -0,0 +1,84 @@
+// RUN: %clangxx -O0 -g %s -o %t && %run %t 2>&1 | FileCheck %s
+
+#include <inttypes.h>
+#include <netdb.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#define STRING_OR_NULL(x) ((x) ? (x) : "null")
+
+void test1() {
+ struct netent *ntp = getnetent();
+
+ printf("%s ", ntp->n_name);
+
+ for (char **cp = ntp->n_aliases; *cp != NULL; cp++)
+ printf("%s ", STRING_OR_NULL(*cp));
+
+ printf("%d ", ntp->n_addrtype);
+ printf("%" PRIu32 "\n", ntp->n_net);
+
+ endnetent();
+}
+
+void test2() {
+ struct netent *ntp = getnetbyname("loopback");
+
+ printf("%s ", ntp->n_name);
+
+ for (char **cp = ntp->n_aliases; *cp != NULL; cp++)
+ printf("%s ", STRING_OR_NULL(*cp));
+
+ printf("%d ", ntp->n_addrtype);
+ printf("%" PRIu32 "\n", ntp->n_net);
+
+ endnetent();
+}
+
+void test3() {
+ struct netent *ntp = getnetbyaddr(127, 2);
+
+ printf("%s ", ntp->n_name);
+
+ for (char **cp = ntp->n_aliases; *cp != NULL; cp++)
+ printf("%s ", STRING_OR_NULL(*cp));
+
+ printf("%d ", ntp->n_addrtype);
+ printf("%" PRIu32 "\n", ntp->n_net);
+
+ endnetent();
+}
+
+void test4() {
+ setnetent(1);
+
+ struct netent *ntp = getnetent();
+
+ printf("%s ", ntp->n_name);
+
+ for (char **cp = ntp->n_aliases; *cp != NULL; cp++)
+ printf("%s ", STRING_OR_NULL(*cp));
+
+ printf("%d ", ntp->n_addrtype);
+ printf("%" PRIu32 "\n", ntp->n_net);
+
+ endnetent();
+}
+
+int main(void) {
+ printf("netent\n");
+
+ test1();
+ test2();
+ test3();
+ test4();
+
+ // CHECK: netent
+ // CHECK: loopback 2 127
+ // CHECK: loopback 2 127
+ // CHECK: loopback 2 127
+ // CHECK: loopback 2 127
+
+ return 0;
+}