]> granicus.if.org Git - sudo/commitdiff
If inet_addr() returns INADDR_NONE, return false instead of iterating
authorTodd C. Miller <Todd.Miller@courtesan.com>
Thu, 23 Jan 2014 03:48:49 +0000 (20:48 -0700)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Thu, 23 Jan 2014 03:48:49 +0000 (20:48 -0700)
through the interfaces looking for a match that will never happen.

plugins/sudoers/match_addr.c

index f3995f3903d781ee72b8fc778017591f30597e81..dd92a78eddcecc51e3afc5892228191edc41b9c2 100644 (file)
@@ -66,8 +66,10 @@ addr_matches_if(const char *n)
     } else
 #endif /* HAVE_STRUCT_IN6_ADDR */
     {
-       family = AF_INET;
        addr.ip4.s_addr = inet_addr(n);
+       if (addr.ip4.s_addr == INADDR_NONE)
+           debug_return_bool(false);
+       family = AF_INET;
     }
 
     SLIST_FOREACH(ifp, get_interfaces(), entries) {
@@ -118,8 +120,10 @@ addr_matches_if_netmask(const char *n, const char *m)
     else
 #endif /* HAVE_STRUCT_IN6_ADDR */
     {
-       family = AF_INET;
        addr.ip4.s_addr = inet_addr(n);
+       if (addr.ip4.s_addr == INADDR_NONE)
+           debug_return_bool(false);
+       family = AF_INET;
     }
 
     if (family == AF_INET) {