The correct bits are now cleared in the IPv6 address as the shift 
value to the correct byte in the IPv6 address was wrong. Depending
on the stack values this could result in a hanging 6rdcalc program
due to an endless loop.

Signed-off-by: Hans Dedecker <[email protected]>
---
 package/6rd/src/6rdcalc.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/package/6rd/src/6rdcalc.c b/package/6rd/src/6rdcalc.c
index 56e07d2..87bc397 100644
--- a/package/6rd/src/6rdcalc.c
+++ b/package/6rd/src/6rdcalc.c
@@ -110,7 +110,7 @@ int main(int argc, const char **argv)
 
        /* Clear remaining bits. */
        while (v6it < 128) {
-               byte6 = (unsigned char *)(&v6.s6_addr) + (v6it >> 2);
+               byte6 = (unsigned char *)(&v6.s6_addr) + (v6it >> 3);
                bit6 = 128 >> (v6it & 0x07);
 
                *byte6 &= ~bit6;
-- 
1.7.1
_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel

Reply via email to