From: Al Viro Date: Thu, 28 Sep 2006 21:31:49 +0000 (-0700) Subject: [IPVS] bug: endianness breakage in ip_vs_ftp X-Git-Tag: v2.6.19-rc1~858^2~8 X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=96d2ca4ec0bb8d0f344e5960224700be3dec3515;p=linux-2.6 [IPVS] bug: endianness breakage in ip_vs_ftp (p[3]<<24) | (p[2]<<16) | (p[1]<<8) | p[0] is not a valid way to spell get_unaligned((__be32 *)p Signed-off-by: Al Viro Signed-off-by: David S. Miller --- diff --git a/net/ipv4/ipvs/ip_vs_ftp.c b/net/ipv4/ipvs/ip_vs_ftp.c index b3bbb4a07a..e433cb0ff8 100644 --- a/net/ipv4/ipvs/ip_vs_ftp.c +++ b/net/ipv4/ipvs/ip_vs_ftp.c @@ -32,6 +32,7 @@ #include #include #include +#include #include @@ -114,8 +115,8 @@ static int ip_vs_ftp_get_addrport(char *data, char *data_limit, if (i != 5) return -1; - *addr = (p[3]<<24) | (p[2]<<16) | (p[1]<<8) | p[0]; - *port = (p[5]<<8) | p[4]; + *addr = get_unaligned((__be32 *)p); + *port = get_unaligned((__be16 *)(p + 4)); return 1; }