Committer  : entrope
CVSROOT    : /cvsroot/undernet-ircu
Module     : ircu2.10
Commit time: 2005-02-10 03:25:50 UTC

Modified files:
     ChangeLog ircd/ircd_res.c ircd/ircd_string.c
     ircd/test/ircd_in_addr_t.c

Log message:

Fix a resolver crash and an v4-compatible address parsing crash.

---------------------- diff included ----------------------
Index: ircu2.10/ChangeLog
diff -u ircu2.10/ChangeLog:1.546 ircu2.10/ChangeLog:1.547
--- ircu2.10/ChangeLog:1.546    Wed Feb  2 14:29:08 2005
+++ ircu2.10/ChangeLog  Wed Feb  9 19:25:38 2005
@@ -1,3 +1,13 @@
+2005-02-09  Michael Poole <[EMAIL PROTECTED]>
+
+       * ircd/ircd_res.c (check_resolver_timeout): Try another way to
+       avoid timer_chg() on a non-queued/active timer.
+
+       * ircd/ircd_string.c (ircd_aton): Set part_start to handle input
+       strings like "::127.0.0.1".
+
+       * ircd/test/ircd_in_addr_t.c (test_addrs): Add a test for that.
+
 2005-02-02  Michael Poole <[EMAIL PROTECTED]>
 
        * Makefile.in (install): Do not create ${prefix}/include since it
Index: ircu2.10/ircd/ircd_res.c
diff -u ircu2.10/ircd/ircd_res.c:1.15 ircu2.10/ircd/ircd_res.c:1.16
--- ircu2.10/ircd/ircd_res.c:1.15       Mon Jan 24 17:37:01 2005
+++ ircu2.10/ircd/ircd_res.c    Wed Feb  9 19:25:39 2005
@@ -18,7 +18,7 @@
  */
 /** @file
  * @brief IRC resolver functions.
- * @version $Id: ircd_res.c,v 1.15 2005/01/25 01:37:01 entrope Exp $
+ * @version $Id: ircd_res.c,v 1.16 2005/02/10 03:25:39 entrope Exp $
  */
 
 #include "client.h"
@@ -278,7 +278,7 @@
 {
   if (when > CurrentTime + AR_TTL)
     when = CurrentTime + AR_TTL;
-  if (!t_onqueue(&res_timeout))
+  if (!t_active(&res_timeout) || !t_onqueue(&res_timeout))
     timer_add(&res_timeout, timeout_resolver, NULL, TT_ABSOLUTE, when);
   else if (when < t_expire(&res_timeout))
     timer_chg(&res_timeout, TT_ABSOLUTE, when);
Index: ircu2.10/ircd/ircd_string.c
diff -u ircu2.10/ircd/ircd_string.c:1.18 ircu2.10/ircd/ircd_string.c:1.19
--- ircu2.10/ircd/ircd_string.c:1.18    Tue Dec 28 13:12:02 2004
+++ ircu2.10/ircd/ircd_string.c Wed Feb  9 19:25:40 2005
@@ -18,7 +18,7 @@
  */
 /** @file
  * @brief Implementation of string operations.
- * @version $Id: ircd_string.c,v 1.18 2004/12/28 21:12:02 entrope Exp $
+ * @version $Id: ircd_string.c,v 1.19 2005/02/10 03:25:40 entrope Exp $
  */
 #include "config.h"
 
@@ -596,6 +596,7 @@
         return 0;
       colon = 0;
       pos += 2;
+      part_start = input + pos;
     }
     while (ii < 8) {
       unsigned char chval;
Index: ircu2.10/ircd/test/ircd_in_addr_t.c
diff -u ircu2.10/ircd/test/ircd_in_addr_t.c:1.1 
ircu2.10/ircd/test/ircd_in_addr_t.c:1.2
--- ircu2.10/ircd/test/ircd_in_addr_t.c:1.1     Tue Dec 28 13:12:00 2004
+++ ircu2.10/ircd/test/ircd_in_addr_t.c Wed Feb  9 19:25:40 2005
@@ -34,6 +34,9 @@
     { "::ffff:127.0.0.3", "127.0.0.3",
       {{ 0, 0, 0, 0, 0, 0xffff, 0x7f00, 3 }},
       "B]AAAD", "B]AAAD", 1, 1, 1 },
+    { "::127.0.0.1", "127.0.0.1",
+      {{ 0, 0, 0, 0, 0, 0, 0x7f00, 1 }},
+      "B]AAAB", "B]AAAB", 1, 1, 1 },
     { "2002:7f00:3::1", "2002:7f00:3::1",
       {{ 0x2002, 0x7f00, 3, 0, 0, 0, 0, 1 }},
       "B]AAAD", "CACH8AAAD_AAB", 1, 0, 0 },
----------------------- End of diff -----------------------

Reply via email to