noip.c (encode_..._inet_addr): Only call `port_from_sockaddr' once.
[preload-hacks] / noip.c
diff --git a/noip.c b/noip.c
index 085b0be..68f4e1e 100644 (file)
--- a/noip.c
+++ b/noip.c
@@ -597,7 +597,8 @@ static int acl_allows_p(const aclnode *a, const struct sockaddr *sa)
              present_sockaddr(sa, 0, buf, sizeof(buf))); })
   for (; a; a = a->next) {
     D( dump_aclnode(a); )
-    if (sockaddr_in_range_p(sa, &a->minaddr, &a->maxaddr) &&
+    if (a->af == sa->sa_family &&
+       sockaddr_in_range_p(sa, &a->minaddr, &a->maxaddr) &&
        a->minport <= port && port <= a->maxport) {
       D( fprintf(stderr, "noip(%d): aha!  %s\n", pid,
                 a->act ? "ALLOW" : "DENY"); )
@@ -676,6 +677,7 @@ static int encode_unused_inet_addr(struct sockaddr *sa,
   struct sockaddr_un wsun;
   int rc;
   char buf[ADDRBUFSZ];
+  int port = port_from_sockaddr(sa);
 
   snprintf(sun->sun_path, sizeof(sun->sun_path), "%s/%s", sockdir,
           present_sockaddr(sa, 0, buf, sizeof(buf)));
@@ -683,7 +685,7 @@ static int encode_unused_inet_addr(struct sockaddr *sa,
   else if (rc == STALE) unlink(sun->sun_path);
 
   wildcard_address(sa->sa_family, &waddr.sa);
-  port_to_sockaddr(&waddr.sa, port_from_sockaddr(sa));
+  port_to_sockaddr(&waddr.sa, port);
   snprintf(wsun.sun_path, sizeof(wsun.sun_path), "%s/%s", sockdir,
           present_sockaddr(&waddr.sa, 0, buf, sizeof(buf)));
   if ((rc = unix_socket_status(&wsun, !desperatep)) == USED) return (-1);
@@ -705,6 +707,7 @@ static int encode_inet_addr(struct sockaddr_un *sun,
   int i;
   int desperatep = 0;
   address addr;
+  int port = port_from_sockaddr(sa);
   char buf[ADDRBUFSZ];
   int rc;
 
@@ -712,14 +715,14 @@ static int encode_inet_addr(struct sockaddr_un *sun,
             present_sockaddr(sa, 0, buf, sizeof(buf)),
             want == WANT_EXISTING ? "EXISTING" : "FRESH"); )
   sun->sun_family = AF_UNIX;
-  if (port_from_sockaddr(sa) || want == WANT_EXISTING) {
+  if (port || want == WANT_EXISTING) {
     snprintf(sun->sun_path, sizeof(sun->sun_path), "%s/%s", sockdir,
             present_sockaddr(sa, 0, buf, sizeof(buf)));
     rc = unix_socket_status(sun, 0);
     if (rc == STALE) unlink(sun->sun_path);
     if (rc != USED && want == WANT_EXISTING) {
       wildcard_address(sa->sa_family, &addr.sa);
-      port_to_sockaddr(&addr.sa, port_from_sockaddr(sa));
+      port_to_sockaddr(&addr.sa, port);
       snprintf(sun->sun_path, sizeof(sun->sun_path), "%s/%s", sockdir,
               present_sockaddr(&addr.sa, 0, buf, sizeof(buf)));
       if (unix_socket_status(sun, 0) == STALE) unlink(sun->sun_path);
@@ -1316,7 +1319,8 @@ static void parse_autoports(char **pp)
   SKIPSPC;
   NEXTNUMBER(q, del); x = strtoul(q, 0, 0); RESCAN(del);
   SKIPSPC;
-  if (*p != '-') goto bad; p++;
+  if (*p != '-') goto bad;
+  p++;
   NEXTNUMBER(q, del); y = strtoul(q, 0, 0); RESCAN(del);
   minautoport = x; maxautoport = y;
   SKIPSPC; if (*p) goto bad;