From 4fb0f4b557ad7cc532e37875f8ba2141772a5e00 Mon Sep 17 00:00:00 2001 From: acinonyx Date: Fri, 13 Jul 2012 16:35:41 +0000 Subject: [PATCH] [packages] quagga: Drop heuristics for IPv6 address recognition git-svn-id: svn://svn.openwrt.org/openwrt/packages@32698 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../007-drop-heuristic-ipv6-recognition.patch | 92 +++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 net/quagga/patches/007-drop-heuristic-ipv6-recognition.patch diff --git a/net/quagga/patches/007-drop-heuristic-ipv6-recognition.patch b/net/quagga/patches/007-drop-heuristic-ipv6-recognition.patch new file mode 100644 index 000000000..1a0e6f4c2 --- /dev/null +++ b/net/quagga/patches/007-drop-heuristic-ipv6-recognition.patch @@ -0,0 +1,92 @@ +Index: quagga-0.99.21/lib/command.c +=================================================================== +--- quagga-0.99.21.orig/lib/command.c ++++ quagga-0.99.21/lib/command.c +@@ -868,86 +868,7 @@ cmd_ipv6_match (const char *str) + if (ret == 1) + return exact_match; + +- while (*str != '\0') +- { +- switch (state) +- { +- case STATE_START: +- if (*str == ':') +- { +- if (*(str + 1) != ':' && *(str + 1) != '\0') +- return no_match; +- colons--; +- state = STATE_COLON; +- } +- else +- { +- sp = str; +- state = STATE_ADDR; +- } +- +- continue; +- case STATE_COLON: +- colons++; +- if (*(str + 1) == ':') +- state = STATE_DOUBLE; +- else +- { +- sp = str + 1; +- state = STATE_ADDR; +- } +- break; +- case STATE_DOUBLE: +- if (double_colon) +- return no_match; +- +- if (*(str + 1) == ':') +- return no_match; +- else +- { +- if (*(str + 1) != '\0') +- colons++; +- sp = str + 1; +- state = STATE_ADDR; +- } +- +- double_colon++; +- nums++; +- break; +- case STATE_ADDR: +- if (*(str + 1) == ':' || *(str + 1) == '\0') +- { +- if (str - sp > 3) +- return no_match; +- +- nums++; +- state = STATE_COLON; +- } +- if (*(str + 1) == '.') +- state = STATE_DOT; +- break; +- case STATE_DOT: +- state = STATE_ADDR; +- break; +- default: +- break; +- } +- +- if (nums > 8) +- return no_match; +- +- if (colons > 7) +- return no_match; +- +- str++; +- } +- +-#if 0 +- if (nums < 11) +- return partly_match; +-#endif /* 0 */ +- +- return exact_match; ++ return no_match; + } + + static enum match_type