bin/91245 : [patch] ipfw(8) sometimes treat ipv6 input as ipv4 * CORRIGE *
Patch pour ipfw qui ne traite pas correctement les adresses IPv6 avec un fichier de règles
Ce bug a été corrigé pour la branche CURRENT (7.x) mais à ce jour pas en 6.x. Corrigé
Le patch ci dessous convient à mon système et correspond à la version :
$FreeBSD : src/sbin/ipfw/ipfw2.c,v 1.76.2.8 2006/06/29 21:03:12 julian Exp $
Le patch n’est donné qu’à titre d’exemple par facilité de présentation : il vous appartient de rechercher les modifications nécessaires pour votre système. (mais si vous recompilez le système vous devez le faire en toute connaissance de cause).
--- ipfw2.c.orig Wed Jul 12 22:23:07 2006
+++ ipfw2.c Wed Jul 12 22:26:04 2006
@@ -3707,7 +3707,8 @@
struct in6_addr a;
if (proto == IPPROTO_IPV6 || strcmp(av, "me6") == 0 ||
- inet_pton(AF_INET6, av, &a))
+ inet_pton(AF_INET6, av, &a) ||
+ strchr(av, ':') != strrchr(av, ':'))
return add_srcip6(cmd, av);
/* XXX: should check for IPv4, not !IPv6 */
if (proto == IPPROTO_IP || strcmp(av, "me") == 0 ||
@@ -3725,7 +3726,8 @@
struct in6_addr a;
if (proto == IPPROTO_IPV6 || strcmp(av, "me6") == 0 ||
- inet_pton(AF_INET6, av, &a))
+ inet_pton(AF_INET6, av, &a)||
+ strchr(av, ':') != strrchr(av, ':'))
return add_dstip6(cmd, av);
/* XXX: should check for IPv4, not !IPv6 */
if (proto == IPPROTO_IP || strcmp(av, "me") == 0 ||
This software is provided ``AS IS’’ without any warranties of any kind.
Cette modification est donnée sans garantie d’aucune sorte.