Operator/Cast precedence wrong: casting mac[0] to (bool) first - giving
"1" for "any mac address that does not start with 00:" - and only then
bit-anding with "1" - thus always returning "true".  Which, in turn,
leads to "reject all incoming packets with 'bad source address'".

OpenVPN bug #216.

Signed-off-by: Gert Doering <g...@greenie.muc.de>
---
 src/openvpn/mroute.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/openvpn/mroute.c b/src/openvpn/mroute.c
index aecb702..850e336 100644
--- a/src/openvpn/mroute.c
+++ b/src/openvpn/mroute.c
@@ -52,7 +52,7 @@ mroute_addr_init (struct mroute_addr *addr)
 static inline bool
 is_mac_mcast_addr (const uint8_t *mac)
 {
-  return (bool) mac[0] & 1;
+  return (bool) (mac[0] & 1);
 }

 static inline bool
-- 
1.7.8.6


Reply via email to