| 5746 |
EXPORT_SYMBOL(xfrm_get_acqseq); |
EXPORT_SYMBOL(xfrm_get_acqseq); |
| 5747 |
diff -Nru a/net/xfrm/xfrm_output.c b/net/xfrm/xfrm_output.c |
diff -Nru a/net/xfrm/xfrm_output.c b/net/xfrm/xfrm_output.c |
| 5748 |
--- a/net/xfrm/xfrm_output.c 2004-07-28 21:35:50 -07:00 |
--- a/net/xfrm/xfrm_output.c 2004-07-28 21:35:50 -07:00 |
| 5749 |
+++ /dev/null Wed Dec 31 16:00:00 196900 |
--- b/net/xfrm/xfrm_output.c 2004-07-28 21:35:50 -07:00 |
| 5750 |
@@ -1,46 +0,0 @@ |
@@ -1,46 +1 @@ |
| 5751 |
-/* |
-/* |
| 5752 |
- * generic xfrm output routines |
- * generic xfrm output routines |
| 5753 |
- * |
- * |
| 5794 |
-out: |
-out: |
| 5795 |
- return err; |
- return err; |
| 5796 |
-} |
-} |
| 5797 |
|
+/* Dummy File as dpkg-source does not handle file deletion */ |
| 5798 |
diff -Nru a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c |
diff -Nru a/net/xfrm/xfrm_state.c b/net/xfrm/xfrm_state.c |
| 5799 |
--- a/net/xfrm/xfrm_state.c 2004-07-28 21:35:50 -07:00 |
--- a/net/xfrm/xfrm_state.c 2004-07-28 21:35:50 -07:00 |
| 5800 |
+++ b/net/xfrm/xfrm_state.c 2004-07-28 21:35:50 -07:00 |
+++ b/net/xfrm/xfrm_state.c 2004-07-28 21:35:50 -07:00 |
| 5815 |
struct xfrm_state * |
struct xfrm_state * |
| 5816 |
xfrm_state_lookup(xfrm_address_t *daddr, u32 spi, u8 proto, |
xfrm_state_lookup(xfrm_address_t *daddr, u32 spi, u8 proto, |
| 5817 |
unsigned short family) |
unsigned short family) |
| 5818 |
|
diff -u a/net/ipv6/ah6.c b/net/ipv6/ah6.c |
| 5819 |
|
--- a/net/ipv6/ah6.c.orig 2004-08-12 16:54:08.000000000 +0900 |
| 5820 |
|
+++ b/net/ipv6/ah6.c 2004-08-15 11:56:43.000000000 +0900 |
| 5821 |
|
@@ -174,11 +174,15 @@ |
| 5822 |
|
} |
| 5823 |
|
|
| 5824 |
|
spin_lock_bh(&x->lock); |
| 5825 |
|
- err = xfrm_check_output(x, skb, AF_INET); |
| 5826 |
|
+ err = xfrm_state_check(x, skb); |
| 5827 |
|
if (err) |
| 5828 |
|
goto error; |
| 5829 |
|
|
| 5830 |
|
if (x->props.mode) { |
| 5831 |
|
+ err = xfrm6_tunnel_check_size(skb); |
| 5832 |
|
+ if (err) |
| 5833 |
|
+ goto error; |
| 5834 |
|
+ |
| 5835 |
|
iph = skb->nh.ipv6h; |
| 5836 |
|
skb->nh.ipv6h = (struct ipv6hdr*)skb_push(skb, x->props.header_len); |
| 5837 |
|
skb->nh.ipv6h->version = 6; |
| 5838 |
|
diff -u a/net/ipv6/esp6.c b/net/ipv6/esp6.c |
| 5839 |
|
--- a/net/ipv6/esp6.c.orig 2004-08-12 16:54:08.000000000 +0900 |
| 5840 |
|
+++ b/net/ipv6/esp6.c 2004-08-15 11:57:00.000000000 +0900 |
| 5841 |
|
@@ -76,14 +76,16 @@ |
| 5842 |
|
} |
| 5843 |
|
|
| 5844 |
|
spin_lock_bh(&x->lock); |
| 5845 |
|
- err = xfrm_check_output(x, skb, AF_INET6); |
| 5846 |
|
+ err = xfrm_state_check(x, skb); |
| 5847 |
|
if (err) |
| 5848 |
|
goto error; |
| 5849 |
|
- err = -ENOMEM; |
| 5850 |
|
- |
| 5851 |
|
- /* Strip IP header in transport mode. Save it. */ |
| 5852 |
|
|
| 5853 |
|
- if (!x->props.mode) { |
| 5854 |
|
+ if (x->props.mode) { |
| 5855 |
|
+ err = xfrm6_tunnel_check_size(skb); |
| 5856 |
|
+ if (err) |
| 5857 |
|
+ goto error; |
| 5858 |
|
+ } else { |
| 5859 |
|
+ /* Strip IP header in transport mode. Save it. */ |
| 5860 |
|
hdr_len = ip6_find_1stfragopt(skb, &prevhdr); |
| 5861 |
|
nexthdr = *prevhdr; |
| 5862 |
|
*prevhdr = IPPROTO_ESP; |
| 5863 |
|
@@ -97,6 +99,7 @@ |
| 5864 |
|
} |
| 5865 |
|
|
| 5866 |
|
/* Now skb is pure payload to encrypt */ |
| 5867 |
|
+ err = -ENOMEM; |
| 5868 |
|
|
| 5869 |
|
/* Round to block size */ |
| 5870 |
|
clen = skb->len; |
| 5871 |
|
diff -u a/net/ipv6/ipcomp6.c b/net/ipv6/ipcomp6.c |
| 5872 |
|
--- a/net/ipv6/ipcomp6.c.orig 2004-08-12 16:54:08.000000000 +0900 |
| 5873 |
|
+++ b/net/ipv6/ipcomp6.c 2004-08-15 11:42:38.000000000 +0900 |
| 5874 |
|
@@ -150,11 +150,15 @@ |
| 5875 |
|
|
| 5876 |
|
spin_lock_bh(&x->lock); |
| 5877 |
|
|
| 5878 |
|
- err = xfrm_check_output(x, skb, AF_INET6); |
| 5879 |
|
+ err = xfrm_state_check(x, skb); |
| 5880 |
|
if (err) |
| 5881 |
|
goto error; |
| 5882 |
|
|
| 5883 |
|
if (x->props.mode) { |
| 5884 |
|
+ err = xfrm6_tunnel_check_size(skb); |
| 5885 |
|
+ if (err) |
| 5886 |
|
+ goto error; |
| 5887 |
|
+ |
| 5888 |
|
hdr_len = sizeof(struct ipv6hdr); |
| 5889 |
|
nexthdr = IPPROTO_IPV6; |
| 5890 |
|
iph = skb->nh.ipv6h; |
| 5891 |
|
diff -u a/net/ipv4/ah4.c b/net/ipv4/ah4.c |
| 5892 |
|
--- a/net/ipv4/ah4.c.orig 2004-08-12 16:54:08.000000000 +0900 |
| 5893 |
|
+++ b/net/ipv4/ah4.c 2004-08-15 11:46:18.000000000 +0900 |
| 5894 |
|
@@ -73,12 +73,15 @@ |
| 5895 |
|
} |
| 5896 |
|
|
| 5897 |
|
spin_lock_bh(&x->lock); |
| 5898 |
|
- err = xfrm_check_output(x, skb, AF_INET); |
| 5899 |
|
+ err = xfrm_state_check(x, skb); |
| 5900 |
|
if (err) |
| 5901 |
|
goto error; |
| 5902 |
|
|
| 5903 |
|
iph = skb->nh.iph; |
| 5904 |
|
if (x->props.mode) { |
| 5905 |
|
+ err = xfrm4_tunnel_check_size(skb); |
| 5906 |
|
+ if (err) |
| 5907 |
|
+ goto error; |
| 5908 |
|
top_iph = (struct iphdr*)skb_push(skb, x->props.header_len); |
| 5909 |
|
top_iph->ihl = 5; |
| 5910 |
|
top_iph->version = 4; |
| 5911 |
|
diff -u a/net/ipv4/esp4.c b/net/ipv4/esp4.c |
| 5912 |
|
--- a/net/ipv4/esp4.c.orig 2004-08-12 16:54:08.000000000 +0900 |
| 5913 |
|
+++ b/net/ipv4/esp4.c 2004-08-15 11:48:12.000000000 +0900 |
| 5914 |
|
@@ -48,13 +48,16 @@ |
| 5915 |
|
} |
| 5916 |
|
|
| 5917 |
|
spin_lock_bh(&x->lock); |
| 5918 |
|
- err = xfrm_check_output(x, skb, AF_INET); |
| 5919 |
|
+ err = xfrm_state_check(x, skb); |
| 5920 |
|
if (err) |
| 5921 |
|
goto error; |
| 5922 |
|
- err = -ENOMEM; |
| 5923 |
|
|
| 5924 |
|
- /* Strip IP header in transport mode. Save it. */ |
| 5925 |
|
- if (!x->props.mode) { |
| 5926 |
|
+ if (x->props.mode) { |
| 5927 |
|
+ err = xfrm4_tunnel_check_size(skb); |
| 5928 |
|
+ if (err) |
| 5929 |
|
+ goto error; |
| 5930 |
|
+ } else { |
| 5931 |
|
+ /* Strip IP header in transport mode. Save it. */ |
| 5932 |
|
iph = skb->nh.iph; |
| 5933 |
|
memcpy(&tmp_iph, iph, iph->ihl*4); |
| 5934 |
|
__skb_pull(skb, iph->ihl*4); |
| 5935 |
|
diff -u a/net/ipv4/ipcomp.c b/net/ipv4/ipcomp.c |
| 5936 |
|
--- a/net/ipv4/ipcomp.c.orig 2004-08-15 11:25:51.000000000 +0900 |
| 5937 |
|
+++ b/net/ipv4/ipcomp.c 2004-08-15 11:50:12.000000000 +0900 |
| 5938 |
|
@@ -168,12 +168,16 @@ |
| 5939 |
|
} |
| 5940 |
|
|
| 5941 |
|
spin_lock_bh(&x->lock); |
| 5942 |
|
- err = xfrm_check_output(x, skb, AF_INET); |
| 5943 |
|
+ err = xfrm_state_check(x, skb); |
| 5944 |
|
if (err) |
| 5945 |
|
goto error; |
| 5946 |
|
|
| 5947 |
|
- /* Don't bother compressing */ |
| 5948 |
|
- if (!x->props.mode) { |
| 5949 |
|
+ if (x->props.mode) { |
| 5950 |
|
+ err = xfrm4_tunnel_check_size(skb); |
| 5951 |
|
+ if (err) |
| 5952 |
|
+ goto error; |
| 5953 |
|
+ } else { |
| 5954 |
|
+ /* Don't bother compressing */ |
| 5955 |
|
iph = skb->nh.iph; |
| 5956 |
|
hdr_len = iph->ihl * 4; |
| 5957 |
|
} |
| 5958 |
#ChangeSet1.1722.2.41 |
#ChangeSet1.1722.2.41 |
| 5959 |
# This is a BitKeeper generated diff -Nru style patch. |
# This is a BitKeeper generated diff -Nru style patch. |
| 5960 |
# |
# |