git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge to Fedora kernel-2.6.18-1.2224_FC5 patched with stable patch-2.6.18.1-vs2.0...
[linux-2.6.git]
/
net
/
ipx
/
af_ipx.c
diff --git
a/net/ipx/af_ipx.c
b/net/ipx/af_ipx.c
index
e6a50e8
..
bef3f61
100644
(file)
--- a/
net/ipx/af_ipx.c
+++ b/
net/ipx/af_ipx.c
@@
-28,7
+28,6
@@
* See net/ipx/ChangeLog.
*/
* See net/ipx/ChangeLog.
*/
-#include <linux/config.h>
#include <linux/capability.h>
#include <linux/errno.h>
#include <linux/if_arp.h>
#include <linux/capability.h>
#include <linux/errno.h>
#include <linux/if_arp.h>
@@
-1643,14
+1642,17
@@
static int ipx_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_ty
if ((skb = skb_share_check(skb, GFP_ATOMIC)) == NULL)
goto out;
if ((skb = skb_share_check(skb, GFP_ATOMIC)) == NULL)
goto out;
- ipx = ipx_hdr(skb);
- ipx_pktsize = ntohs(ipx->ipx_pktsize);
+ if (!pskb_may_pull(skb, sizeof(struct ipxhdr)))
+ goto drop;
+
+ ipx_pktsize = ntohs(ipx_hdr(skb)->ipx_pktsize);
/* Too small or invalid header? */
/* Too small or invalid header? */
- if (ipx_pktsize < sizeof(struct ipxhdr)
-
||
!pskb_may_pull(skb, ipx_pktsize))
+ if (ipx_pktsize < sizeof(struct ipxhdr)
||
+ !pskb_may_pull(skb, ipx_pktsize))
goto drop;
goto drop;
+ ipx = ipx_hdr(skb);
if (ipx->ipx_checksum != IPX_NO_CHECKSUM &&
ipx->ipx_checksum != ipx_cksum(ipx, ipx_pktsize))
goto drop;
if (ipx->ipx_checksum != IPX_NO_CHECKSUM &&
ipx->ipx_checksum != ipx_cksum(ipx, ipx_pktsize))
goto drop;