aboutsummaryrefslogtreecommitdiffstats
path: root/net/netlabel/netlabel_unlabeled.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/netlabel/netlabel_unlabeled.c')
-rw-r--r--net/netlabel/netlabel_unlabeled.c28
1 files changed, 18 insertions, 10 deletions
diff --git a/net/netlabel/netlabel_unlabeled.c b/net/netlabel/netlabel_unlabeled.c
index 42e81fd8cc49..3587874d64ec 100644
--- a/net/netlabel/netlabel_unlabeled.c
+++ b/net/netlabel/netlabel_unlabeled.c
@@ -617,8 +617,6 @@ static int netlbl_unlhsh_add(struct net *net,
617 int ifindex; 617 int ifindex;
618 struct net_device *dev; 618 struct net_device *dev;
619 struct netlbl_unlhsh_iface *iface; 619 struct netlbl_unlhsh_iface *iface;
620 struct in_addr *addr4, *mask4;
621 struct in6_addr *addr6, *mask6;
622 struct audit_buffer *audit_buf = NULL; 620 struct audit_buffer *audit_buf = NULL;
623 char *secctx = NULL; 621 char *secctx = NULL;
624 u32 secctx_len; 622 u32 secctx_len;
@@ -651,7 +649,9 @@ static int netlbl_unlhsh_add(struct net *net,
651 audit_buf = netlbl_audit_start_common(AUDIT_MAC_UNLBL_STCADD, 649 audit_buf = netlbl_audit_start_common(AUDIT_MAC_UNLBL_STCADD,
652 audit_info); 650 audit_info);
653 switch (addr_len) { 651 switch (addr_len) {
654 case sizeof(struct in_addr): 652 case sizeof(struct in_addr): {
653 struct in_addr *addr4, *mask4;
654
655 addr4 = (struct in_addr *)addr; 655 addr4 = (struct in_addr *)addr;
656 mask4 = (struct in_addr *)mask; 656 mask4 = (struct in_addr *)mask;
657 ret_val = netlbl_unlhsh_add_addr4(iface, addr4, mask4, secid); 657 ret_val = netlbl_unlhsh_add_addr4(iface, addr4, mask4, secid);
@@ -661,8 +661,11 @@ static int netlbl_unlhsh_add(struct net *net,
661 addr4->s_addr, 661 addr4->s_addr,
662 mask4->s_addr); 662 mask4->s_addr);
663 break; 663 break;
664 }
664#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) 665#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
665 case sizeof(struct in6_addr): 666 case sizeof(struct in6_addr): {
667 struct in6_addr *addr6, *mask6;
668
666 addr6 = (struct in6_addr *)addr; 669 addr6 = (struct in6_addr *)addr;
667 mask6 = (struct in6_addr *)mask; 670 mask6 = (struct in6_addr *)mask;
668 ret_val = netlbl_unlhsh_add_addr6(iface, addr6, mask6, secid); 671 ret_val = netlbl_unlhsh_add_addr6(iface, addr6, mask6, secid);
@@ -671,6 +674,7 @@ static int netlbl_unlhsh_add(struct net *net,
671 dev_name, 674 dev_name,
672 addr6, mask6); 675 addr6, mask6);
673 break; 676 break;
677 }
674#endif /* IPv6 */ 678#endif /* IPv6 */
675 default: 679 default:
676 ret_val = -EINVAL; 680 ret_val = -EINVAL;
@@ -1741,10 +1745,6 @@ int netlbl_unlabel_getattr(const struct sk_buff *skb,
1741 u16 family, 1745 u16 family,
1742 struct netlbl_lsm_secattr *secattr) 1746 struct netlbl_lsm_secattr *secattr)
1743{ 1747{
1744 struct iphdr *hdr4;
1745 struct ipv6hdr *hdr6;
1746 struct netlbl_unlhsh_addr4 *addr4;
1747 struct netlbl_unlhsh_addr6 *addr6;
1748 struct netlbl_unlhsh_iface *iface; 1748 struct netlbl_unlhsh_iface *iface;
1749 1749
1750 rcu_read_lock(); 1750 rcu_read_lock();
@@ -1752,21 +1752,29 @@ int netlbl_unlabel_getattr(const struct sk_buff *skb,
1752 if (iface == NULL) 1752 if (iface == NULL)
1753 goto unlabel_getattr_nolabel; 1753 goto unlabel_getattr_nolabel;
1754 switch (family) { 1754 switch (family) {
1755 case PF_INET: 1755 case PF_INET: {
1756 struct iphdr *hdr4;
1757 struct netlbl_unlhsh_addr4 *addr4;
1758
1756 hdr4 = ip_hdr(skb); 1759 hdr4 = ip_hdr(skb);
1757 addr4 = netlbl_unlhsh_search_addr4(hdr4->saddr, iface); 1760 addr4 = netlbl_unlhsh_search_addr4(hdr4->saddr, iface);
1758 if (addr4 == NULL) 1761 if (addr4 == NULL)
1759 goto unlabel_getattr_nolabel; 1762 goto unlabel_getattr_nolabel;
1760 secattr->attr.secid = addr4->secid; 1763 secattr->attr.secid = addr4->secid;
1761 break; 1764 break;
1765 }
1762#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) 1766#if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)
1763 case PF_INET6: 1767 case PF_INET6: {
1768 struct ipv6hdr *hdr6;
1769 struct netlbl_unlhsh_addr6 *addr6;
1770
1764 hdr6 = ipv6_hdr(skb); 1771 hdr6 = ipv6_hdr(skb);
1765 addr6 = netlbl_unlhsh_search_addr6(&hdr6->saddr, iface); 1772 addr6 = netlbl_unlhsh_search_addr6(&hdr6->saddr, iface);
1766 if (addr6 == NULL) 1773 if (addr6 == NULL)
1767 goto unlabel_getattr_nolabel; 1774 goto unlabel_getattr_nolabel;
1768 secattr->attr.secid = addr6->secid; 1775 secattr->attr.secid = addr6->secid;
1769 break; 1776 break;
1777 }
1770#endif /* IPv6 */ 1778#endif /* IPv6 */
1771 default: 1779 default:
1772 goto unlabel_getattr_nolabel; 1780 goto unlabel_getattr_nolabel;