xref: /llvm-project/compiler-rt/test/sanitizer_common/TestCases/Linux/netent.cpp (revision 49f282b5496600d9a9bc3ea311cf718e892ddf2c)
18fdd821aSDavid Carlier // RUN: %clangxx -O0 -g %s -o %t
257d0e9bfSVitaly Buka 
357d0e9bfSVitaly Buka // bionic/netdb.cpp is not implemented.
457d0e9bfSVitaly Buka // UNSUPPORTED: android
557d0e9bfSVitaly Buka 
68fdd821aSDavid Carlier #include <inttypes.h>
78fdd821aSDavid Carlier #include <netdb.h>
88fdd821aSDavid Carlier #include <stdint.h>
98fdd821aSDavid Carlier #include <stdio.h>
108fdd821aSDavid Carlier #include <stdlib.h>
118fdd821aSDavid Carlier #include <assert.h>
128fdd821aSDavid Carlier 
138fdd821aSDavid Carlier #if defined(__linux__)
148fdd821aSDavid Carlier #define LOOPBACK "loopback"
158fdd821aSDavid Carlier #else
168fdd821aSDavid Carlier #define LOOPBACK "your-net"
178fdd821aSDavid Carlier #endif
188fdd821aSDavid Carlier 
test1()198fdd821aSDavid Carlier void test1() {
208fdd821aSDavid Carlier   struct netent *ntp = getnetent();
218fdd821aSDavid Carlier   assert(ntp && ntp->n_name);
228fdd821aSDavid Carlier   assert(ntp->n_addrtype == 2);
238fdd821aSDavid Carlier   assert(ntp->n_net == 127);
24*1a8aab6dSWu, Yingcong   char **aliases = ntp->n_aliases;
25*1a8aab6dSWu, Yingcong   while (aliases) {
26*1a8aab6dSWu, Yingcong     printf("%s\n", *aliases);
27*1a8aab6dSWu, Yingcong     aliases++;
28*1a8aab6dSWu, Yingcong   }
298fdd821aSDavid Carlier   endnetent();
308fdd821aSDavid Carlier }
318fdd821aSDavid Carlier 
test2()328fdd821aSDavid Carlier void test2() {
338fdd821aSDavid Carlier   struct netent *ntp = getnetbyname(LOOPBACK);
348fdd821aSDavid Carlier   assert(ntp && ntp->n_name);
358fdd821aSDavid Carlier   assert(ntp->n_addrtype == 2);
368fdd821aSDavid Carlier   assert(ntp->n_net == 127);
37*1a8aab6dSWu, Yingcong   char **aliases = ntp->n_aliases;
38*1a8aab6dSWu, Yingcong   while (aliases) {
39*1a8aab6dSWu, Yingcong     printf("%s\n", *aliases);
40*1a8aab6dSWu, Yingcong     aliases++;
41*1a8aab6dSWu, Yingcong   }
428fdd821aSDavid Carlier   endnetent();
438fdd821aSDavid Carlier }
448fdd821aSDavid Carlier 
test3()458fdd821aSDavid Carlier void test3() {
468fdd821aSDavid Carlier   struct netent *lb = getnetbyname(LOOPBACK);
478fdd821aSDavid Carlier   assert(lb);
488fdd821aSDavid Carlier   struct netent *ntp = getnetbyaddr(lb->n_net, lb->n_addrtype);
498fdd821aSDavid Carlier   assert(ntp && ntp->n_name);
508fdd821aSDavid Carlier   assert(ntp->n_addrtype == 2);
518fdd821aSDavid Carlier   assert(ntp->n_net == 127);
52*1a8aab6dSWu, Yingcong   char **aliases = ntp->n_aliases;
53*1a8aab6dSWu, Yingcong   while (aliases) {
54*1a8aab6dSWu, Yingcong     printf("%s\n", *aliases);
55*1a8aab6dSWu, Yingcong     aliases++;
56*1a8aab6dSWu, Yingcong   }
578fdd821aSDavid Carlier   endnetent();
588fdd821aSDavid Carlier }
598fdd821aSDavid Carlier 
test4()608fdd821aSDavid Carlier void test4() {
618fdd821aSDavid Carlier   setnetent(1);
628fdd821aSDavid Carlier 
638fdd821aSDavid Carlier   struct netent *ntp = getnetent();
648fdd821aSDavid Carlier   assert(ntp && ntp->n_name);
658fdd821aSDavid Carlier   assert(ntp->n_addrtype == 2);
668fdd821aSDavid Carlier   assert(ntp->n_net == 127);
678fdd821aSDavid Carlier   endnetent();
688fdd821aSDavid Carlier }
698fdd821aSDavid Carlier 
main(void)708fdd821aSDavid Carlier int main(void) {
718fdd821aSDavid Carlier   printf("netent\n");
728fdd821aSDavid Carlier 
738fdd821aSDavid Carlier   test1();
748fdd821aSDavid Carlier   test2();
758fdd821aSDavid Carlier   test3();
768fdd821aSDavid Carlier   test4();
778fdd821aSDavid Carlier 
788fdd821aSDavid Carlier   return 0;
798fdd821aSDavid Carlier }
80