]> git.ipfire.org Git - thirdparty/xtables-addons.git/commitdiff
ipp2p: guard against potential unaligned access
authorJan Engelhardt <jengelh@computergmbh.de>
Wed, 26 Mar 2008 06:15:03 +0000 (07:15 +0100)
committerJan Engelhardt <jengelh@computergmbh.de>
Tue, 8 Apr 2008 18:34:05 +0000 (20:34 +0200)
get_u16() and get_u32() may get passed unaligned pointers;
let's play it safe.

extensions/xt_ipp2p.c

index ae8a239c91e450afd4bd919dbfe18d9b120bc9a4..c4c2eea1ed53874557753b6f9e69b794f7c24c09 100644 (file)
@@ -3,6 +3,7 @@
 #include <linux/netfilter_ipv4/ip_tables.h>
 #include <net/tcp.h>
 #include <net/udp.h>
+#include <asm/unaligned.h>
 #include "xt_ipp2p.h"
 #include "compat_xtables.h"
 
@@ -10,9 +11,9 @@
 //#define IPP2P_DEBUG_SOUL
 //#define IPP2P_DEBUG_WINMX
 
-#define get_u8(X, O)   (*(__u8 *)(X + O))
-#define get_u16(X, O)  (*(__u16 *)(X + O))
-#define get_u32(X, O)  (*(__u32 *)(X + O))
+#define get_u8(X,  O)  (*(__u8 *)(X + O))
+#define get_u16(X, O)  get_unaligned((__u16 *)(X + O))
+#define get_u32(X, O)  get_unaligned((__u32 *)(X + O))
 
 MODULE_AUTHOR("Eicke Friedrich/Klaus Degner <ipp2p@ipp2p.org>");
 MODULE_DESCRIPTION("An extension to iptables to identify P2P traffic.");