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 -----------------------