Imported Upstream version 1.8.4p4
[debian/sudo] / plugins / sudoers / match_addr.c
index f4bc731504d49a91e415552a729c145a8aee5d77..9634eaca828f415954fd210b45d61f5bcc7609ae 100644 (file)
 #include "sudoers.h"
 #include "interfaces.h"
 
-static int
+static bool
 addr_matches_if(char *n)
 {
     union sudo_in_addr_un addr;
     struct interface *ifp;
-#ifdef HAVE_IN6_ADDR
+#ifdef HAVE_STRUCT_IN6_ADDR
     int j;
 #endif
     int family;
+    debug_decl(addr_matches_if, SUDO_DEBUG_MATCH)
 
-#ifdef HAVE_IN6_ADDR
+#ifdef HAVE_STRUCT_IN6_ADDR
     if (inet_pton(AF_INET6, n, &addr.ip6) > 0) {
        family = AF_INET6;
     } else
-#endif
+#endif /* HAVE_STRUCT_IN6_ADDR */
     {
        family = AF_INET;
        addr.ip4.s_addr = inet_addr(n);
@@ -78,42 +79,43 @@ addr_matches_if(char *n)
                if (ifp->addr.ip4.s_addr == addr.ip4.s_addr ||
                    (ifp->addr.ip4.s_addr & ifp->netmask.ip4.s_addr)
                    == addr.ip4.s_addr)
-                   return TRUE;
+                   debug_return_bool(true);
                break;
-#ifdef HAVE_IN6_ADDR
+#ifdef HAVE_STRUCT_IN6_ADDR
            case AF_INET6:
                if (memcmp(ifp->addr.ip6.s6_addr, addr.ip6.s6_addr,
                    sizeof(addr.ip6.s6_addr)) == 0)
-                   return TRUE;
+                   debug_return_bool(true);
                for (j = 0; j < sizeof(addr.ip6.s6_addr); j++) {
                    if ((ifp->addr.ip6.s6_addr[j] & ifp->netmask.ip6.s6_addr[j]) != addr.ip6.s6_addr[j])
                        break;
                }
                if (j == sizeof(addr.ip6.s6_addr))
-                   return TRUE;
-#endif
+                   debug_return_bool(true);
+#endif /* HAVE_STRUCT_IN6_ADDR */
        }
     }
 
-    return FALSE;
+    debug_return_bool(false);
 }
 
-static int
+static bool
 addr_matches_if_netmask(char *n, char *m)
 {
     int i;
     union sudo_in_addr_un addr, mask;
     struct interface *ifp;
-#ifdef HAVE_IN6_ADDR
+#ifdef HAVE_STRUCT_IN6_ADDR
     int j;
 #endif
     int family;
+    debug_decl(addr_matches_if, SUDO_DEBUG_MATCH)
 
-#ifdef HAVE_IN6_ADDR
+#ifdef HAVE_STRUCT_IN6_ADDR
     if (inet_pton(AF_INET6, n, &addr.ip6) > 0)
        family = AF_INET6;
     else
-#endif
+#endif /* HAVE_STRUCT_IN6_ADDR */
     {
        family = AF_INET;
        addr.ip4.s_addr = inet_addr(n);
@@ -134,7 +136,7 @@ addr_matches_if_netmask(char *n, char *m)
        }
        addr.ip4.s_addr &= mask.ip4.s_addr;
     }
-#ifdef HAVE_IN6_ADDR
+#ifdef HAVE_STRUCT_IN6_ADDR
     else {
        if (inet_pton(AF_INET6, m, &mask.ip6) <= 0) {
            j = atoi(m);
@@ -149,7 +151,7 @@ addr_matches_if_netmask(char *n, char *m)
            }
        }
     }
-#endif /* HAVE_IN6_ADDR */
+#endif /* HAVE_STRUCT_IN6_ADDR */
 
     for (ifp = interfaces; ifp != NULL; ifp = ifp->next) {
        if (ifp->family != family)
@@ -157,31 +159,32 @@ addr_matches_if_netmask(char *n, char *m)
        switch(family) {
            case AF_INET:
                if ((ifp->addr.ip4.s_addr & mask.ip4.s_addr) == addr.ip4.s_addr)
-                   return TRUE;
-#ifdef HAVE_IN6_ADDR
+                   debug_return_bool(true);
+#ifdef HAVE_STRUCT_IN6_ADDR
            case AF_INET6:
                for (j = 0; j < sizeof(addr.ip6.s6_addr); j++) {
                    if ((ifp->addr.ip6.s6_addr[j] & mask.ip6.s6_addr[j]) != addr.ip6.s6_addr[j])
                        break;
                }
                if (j == sizeof(addr.ip6.s6_addr))
-                   return TRUE;
-#endif /* HAVE_IN6_ADDR */
+                   debug_return_bool(true);
+#endif /* HAVE_STRUCT_IN6_ADDR */
        }
     }
 
-    return FALSE;
+    debug_return_bool(false);
 }
 
 /*
- * Returns TRUE if "n" is one of our ip addresses or if
- * "n" is a network that we are on, else returns FALSE.
+ * Returns true if "n" is one of our ip addresses or if
+ * "n" is a network that we are on, else returns false.
  */
-int
+bool
 addr_matches(char *n)
 {
     char *m;
-    int retval;
+    bool retval;
+    debug_decl(addr_matches, SUDO_DEBUG_MATCH)
 
     /* If there's an explicit netmask, use it. */
     if ((m = strchr(n, '/'))) {
@@ -191,5 +194,5 @@ addr_matches(char *n)
     } else
        retval = addr_matches_if(n);
 
-    return retval;
+    debug_return_bool(retval);
 }