diff options
author | Ilpo Järvinen <ilpo.jarvinen@helsinki.fi> | 2008-12-15 02:19:02 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-12-15 02:19:02 -0500 |
commit | 79f55f11a090d9f369448dcb58242c7924873920 (patch) | |
tree | 34dc1d9c852a060ca303d42bdf430033fdd7ce6a /net | |
parent | e780f1c33d76ebb81607a6b5d6b669edb9065a7f (diff) |
nf/dccp: merge errorpaths
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/netfilter/xt_dccp.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/net/netfilter/xt_dccp.c b/net/netfilter/xt_dccp.c index e5d3e8673287..0989f29ade2e 100644 --- a/net/netfilter/xt_dccp.c +++ b/net/netfilter/xt_dccp.c | |||
@@ -45,10 +45,8 @@ dccp_find_option(u_int8_t option, | |||
45 | unsigned int optlen = dh->dccph_doff*4 - __dccp_hdr_len(dh); | 45 | unsigned int optlen = dh->dccph_doff*4 - __dccp_hdr_len(dh); |
46 | unsigned int i; | 46 | unsigned int i; |
47 | 47 | ||
48 | if (dh->dccph_doff * 4 < __dccp_hdr_len(dh)) { | 48 | if (dh->dccph_doff * 4 < __dccp_hdr_len(dh)) |
49 | *hotdrop = true; | 49 | goto invalid; |
50 | return false; | ||
51 | } | ||
52 | 50 | ||
53 | if (!optlen) | 51 | if (!optlen) |
54 | return false; | 52 | return false; |
@@ -57,9 +55,7 @@ dccp_find_option(u_int8_t option, | |||
57 | op = skb_header_pointer(skb, protoff + optoff, optlen, dccp_optbuf); | 55 | op = skb_header_pointer(skb, protoff + optoff, optlen, dccp_optbuf); |
58 | if (op == NULL) { | 56 | if (op == NULL) { |
59 | /* If we don't have the whole header, drop packet. */ | 57 | /* If we don't have the whole header, drop packet. */ |
60 | spin_unlock_bh(&dccp_buflock); | 58 | goto partial; |
61 | *hotdrop = true; | ||
62 | return false; | ||
63 | } | 59 | } |
64 | 60 | ||
65 | for (i = 0; i < optlen; ) { | 61 | for (i = 0; i < optlen; ) { |
@@ -76,6 +72,12 @@ dccp_find_option(u_int8_t option, | |||
76 | 72 | ||
77 | spin_unlock_bh(&dccp_buflock); | 73 | spin_unlock_bh(&dccp_buflock); |
78 | return false; | 74 | return false; |
75 | |||
76 | partial: | ||
77 | spin_unlock_bh(&dccp_buflock); | ||
78 | invalid: | ||
79 | *hotdrop = true; | ||
80 | return false; | ||
79 | } | 81 | } |
80 | 82 | ||
81 | 83 | ||