diff options
Diffstat (limited to 'net/dccp')
-rw-r--r-- | net/dccp/ipv4.c | 3 | ||||
-rw-r--r-- | net/dccp/ipv6.c | 7 |
2 files changed, 8 insertions, 2 deletions
diff --git a/net/dccp/ipv4.c b/net/dccp/ipv4.c index 386498053b1c..171d363876ee 100644 --- a/net/dccp/ipv4.c +++ b/net/dccp/ipv4.c | |||
@@ -501,6 +501,9 @@ int dccp_v4_conn_request(struct sock *sk, struct sk_buff *skb) | |||
501 | 501 | ||
502 | dccp_openreq_init(req, &dp, skb); | 502 | dccp_openreq_init(req, &dp, skb); |
503 | 503 | ||
504 | if (security_inet_conn_request(sk, skb, req)) | ||
505 | goto drop_and_free; | ||
506 | |||
504 | ireq = inet_rsk(req); | 507 | ireq = inet_rsk(req); |
505 | ireq->loc_addr = daddr; | 508 | ireq->loc_addr = daddr; |
506 | ireq->rmt_addr = saddr; | 509 | ireq->rmt_addr = saddr; |
diff --git a/net/dccp/ipv6.c b/net/dccp/ipv6.c index 53d255c01431..231bc7c7e749 100644 --- a/net/dccp/ipv6.c +++ b/net/dccp/ipv6.c | |||
@@ -424,7 +424,7 @@ static int dccp_v6_send_response(struct sock *sk, struct request_sock *req, | |||
424 | fl.oif = ireq6->iif; | 424 | fl.oif = ireq6->iif; |
425 | fl.fl_ip_dport = inet_rsk(req)->rmt_port; | 425 | fl.fl_ip_dport = inet_rsk(req)->rmt_port; |
426 | fl.fl_ip_sport = inet_sk(sk)->sport; | 426 | fl.fl_ip_sport = inet_sk(sk)->sport; |
427 | security_sk_classify_flow(sk, &fl); | 427 | security_req_classify_flow(req, &fl); |
428 | 428 | ||
429 | if (dst == NULL) { | 429 | if (dst == NULL) { |
430 | opt = np->opt; | 430 | opt = np->opt; |
@@ -626,7 +626,7 @@ static void dccp_v6_reqsk_send_ack(struct sk_buff *rxskb, | |||
626 | fl.oif = inet6_iif(rxskb); | 626 | fl.oif = inet6_iif(rxskb); |
627 | fl.fl_ip_dport = dh->dccph_dport; | 627 | fl.fl_ip_dport = dh->dccph_dport; |
628 | fl.fl_ip_sport = dh->dccph_sport; | 628 | fl.fl_ip_sport = dh->dccph_sport; |
629 | security_skb_classify_flow(rxskb, &fl); | 629 | security_req_classify_flow(req, &fl); |
630 | 630 | ||
631 | if (!ip6_dst_lookup(NULL, &skb->dst, &fl)) { | 631 | if (!ip6_dst_lookup(NULL, &skb->dst, &fl)) { |
632 | if (xfrm_lookup(&skb->dst, &fl, NULL, 0) >= 0) { | 632 | if (xfrm_lookup(&skb->dst, &fl, NULL, 0) >= 0) { |
@@ -709,6 +709,9 @@ static int dccp_v6_conn_request(struct sock *sk, struct sk_buff *skb) | |||
709 | 709 | ||
710 | dccp_openreq_init(req, &dp, skb); | 710 | dccp_openreq_init(req, &dp, skb); |
711 | 711 | ||
712 | if (security_inet_conn_request(sk, skb, req)) | ||
713 | goto drop_and_free; | ||
714 | |||
712 | ireq6 = inet6_rsk(req); | 715 | ireq6 = inet6_rsk(req); |
713 | ireq = inet_rsk(req); | 716 | ireq = inet_rsk(req); |
714 | ipv6_addr_copy(&ireq6->rmt_addr, &skb->nh.ipv6h->saddr); | 717 | ipv6_addr_copy(&ireq6->rmt_addr, &skb->nh.ipv6h->saddr); |