[PATCH] Fix a bidirectional UDS connect check
authorZbigniew Jasinski <z.jasinski@samsung.com>
Tue, 30 Dec 2014 06:37:15 +0000 (15:37 +0900)
committerjinhyung.jo <jinhyung.jo@samsung.com>
Tue, 30 Dec 2014 08:53:59 +0000 (17:53 +0900)
The 54e70ec5eb090193b03e69d551fa6771a5a217c4 commit introduced a
bidirectional check that should have checked for mutual WRITE access
between two labels. Due to a typo subject's OUT label is checked with
object's OUT. Should be OUT to IN.

Change-Id: I99a51b2ed49404eea77ee0c01364d626933aaf00
Signed-off-by: Zbigniew Jasinski <z.jasinski@samsung.com>
security/smack/smack_lsm.c

index 28855d6f158f0d69069d31240e76d6e90412a20e..a85bc4c30211e3a89562966db9d555fcbbf794b7 100644 (file)
@@ -3087,14 +3087,17 @@ static int smack_unix_stream_connect(struct sock *sock,
 
        if (!smack_privileged(CAP_MAC_OVERRIDE)) {
                skp = ssp->smk_out;
-               okp = osp->smk_out;
+               okp = osp->smk_in;
 #ifdef CONFIG_AUDIT
                smk_ad_init_net(&ad, __func__, LSM_AUDIT_DATA_NET, &net);
                smk_ad_setfield_u_net_sk(&ad, other);
 #endif
                rc = smk_access(skp, okp->smk_known, MAY_WRITE, &ad);
-               if (rc == 0)
-                       rc = smk_access(okp, okp->smk_known, MAY_WRITE, NULL);
+               if (rc == 0) {
+                       okp = osp->smk_out;
+                       skp = ssp->smk_in;
+                       rc = smk_access(okp, skp->smk_known, MAY_WRITE, NULL);
+               }
        }
 
        /*