Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=2e1d146a19f2941aec08f60ca67fb2763baad595
Commit:     2e1d146a19f2941aec08f60ca67fb2763baad595
Parent:     cba44359d15ac7a3bca2c9199b7ff403d7edc69e
Author:     Ahmed S. Darwish <[EMAIL PROTECTED]>
AuthorDate: Wed Feb 13 15:03:34 2008 -0800
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Wed Feb 13 16:21:20 2008 -0800

    Smack: check for 'struct socket' with NULL sk
    
    There's a small problem with smack and NFS. A similar report was also
    sent here: http://lkml.org/lkml/2007/10/27/85
    
    I've also added similar checks in inode_{get/set}security().  Cheating from
    SELinux post_create_socket(), it does the same.
    
    [EMAIL PROTECTED]: remove uneeded BUG_ON()]
    Signed-off-by: Ahmed S. Darwish <[EMAIL PROTECTED]>
    Acked-by: Casey Schaufler <[EMAIL PROTECTED]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
---
 security/smack/smack_lsm.c |    9 +++++----
 1 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c
index 1c11e42..5b69048 100644
--- a/security/smack/smack_lsm.c
+++ b/security/smack/smack_lsm.c
@@ -701,7 +701,7 @@ static int smack_inode_getsecurity(const struct inode 
*inode,
                return -EOPNOTSUPP;
 
        sock = SOCKET_I(ip);
-       if (sock == NULL)
+       if (sock == NULL || sock->sk == NULL)
                return -EOPNOTSUPP;
 
        ssp = sock->sk->sk_security;
@@ -1280,10 +1280,11 @@ static void smack_to_secattr(char *smack, struct 
netlbl_lsm_secattr *nlsp)
  */
 static int smack_netlabel(struct sock *sk)
 {
-       struct socket_smack *ssp = sk->sk_security;
+       struct socket_smack *ssp;
        struct netlbl_lsm_secattr secattr;
        int rc = 0;
 
+       ssp = sk->sk_security;
        netlbl_secattr_init(&secattr);
        smack_to_secattr(ssp->smk_out, &secattr);
        if (secattr.flags != NETLBL_SECATTR_NONE)
@@ -1331,7 +1332,7 @@ static int smack_inode_setsecurity(struct inode *inode, 
const char *name,
                return -EOPNOTSUPP;
 
        sock = SOCKET_I(inode);
-       if (sock == NULL)
+       if (sock == NULL || sock->sk == NULL)
                return -EOPNOTSUPP;
 
        ssp = sock->sk->sk_security;
@@ -1362,7 +1363,7 @@ static int smack_inode_setsecurity(struct inode *inode, 
const char *name,
 static int smack_socket_post_create(struct socket *sock, int family,
                                    int type, int protocol, int kern)
 {
-       if (family != PF_INET)
+       if (family != PF_INET || sock->sk == NULL)
                return 0;
        /*
         * Set the outbound netlbl.
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to