]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
Smack: Check UDP-Lite and DCCP protocols during IPv6 handling
authorPiotr Sawicki <p.sawicki2@partner.samsung.com>
Thu, 19 Jul 2018 09:45:16 +0000 (11:45 +0200)
committerCasey Schaufler <casey@schaufler-ca.com>
Mon, 23 Jul 2018 19:59:51 +0000 (12:59 -0700)
The smack_socket_sock_rcv_skb() function is checking smack labels
only for UDP and TCP frames carried in IPv6 packets. From now on,
it is able also to handle UDP-Lite and DCCP protocols.

Signed-off-by: Piotr Sawicki <p.sawicki2@partner.samsung.com>
Signed-off-by: Casey Schaufler <casey@schaufler-ca.com>
security/smack/smack_lsm.c

index c4feb954d53f9e26f8dc848d6eff2da3fdfee5e4..aff8397e8c7e48567ab7a745d0f5d316a2089747 100644 (file)
@@ -3895,6 +3895,7 @@ static int smk_skb_to_addr_ipv6(struct sk_buff *skb, struct sockaddr_in6 *sip)
                        sip->sin6_port = th->source;
                break;
        case IPPROTO_UDP:
+       case IPPROTO_UDPLITE:
                uh = skb_header_pointer(skb, offset, sizeof(_udph), &_udph);
                if (uh != NULL)
                        sip->sin6_port = uh->source;
@@ -3985,7 +3986,8 @@ static int smack_socket_sock_rcv_skb(struct sock *sk, struct sk_buff *skb)
 #if IS_ENABLED(CONFIG_IPV6)
        case PF_INET6:
                proto = smk_skb_to_addr_ipv6(skb, &sadd);
-               if (proto != IPPROTO_UDP && proto != IPPROTO_TCP)
+               if (proto != IPPROTO_UDP && proto != IPPROTO_UDPLITE &&
+                   proto != IPPROTO_TCP && proto != IPPROTO_DCCP)
                        break;
 #ifdef SMACK_IPV6_SECMARK_LABELING
                if (skb && skb->secmark != 0)