aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorIlpo Järvinen <ilpo.jarvinen@helsinki.fi>2008-12-15 02:19:02 -0500
committerDavid S. Miller <davem@davemloft.net>2008-12-15 02:19:02 -0500
commit79f55f11a090d9f369448dcb58242c7924873920 (patch)
tree34dc1d9c852a060ca303d42bdf430033fdd7ce6a /net
parente780f1c33d76ebb81607a6b5d6b669edb9065a7f (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.c16
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
76partial:
77 spin_unlock_bh(&dccp_buflock);
78invalid:
79 *hotdrop = true;
80 return false;
79} 81}
80 82
81 83