diff options
Diffstat (limited to 'security')
-rw-r--r-- | security/selinux/hooks.c | 27 |
1 files changed, 16 insertions, 11 deletions
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c index 63701fe0e1ad..265f33d3af9b 100644 --- a/security/selinux/hooks.c +++ b/security/selinux/hooks.c | |||
@@ -2032,9 +2032,9 @@ static int selinux_inode_init_security(struct inode *inode, struct inode *dir, | |||
2032 | struct inode_security_struct *dsec; | 2032 | struct inode_security_struct *dsec; |
2033 | struct superblock_security_struct *sbsec; | 2033 | struct superblock_security_struct *sbsec; |
2034 | struct inode_security_struct *isec; | 2034 | struct inode_security_struct *isec; |
2035 | u32 newsid; | 2035 | u32 newsid, clen; |
2036 | int rc; | 2036 | int rc; |
2037 | char *namep, *context; | 2037 | char *namep = NULL, *context; |
2038 | 2038 | ||
2039 | tsec = current->security; | 2039 | tsec = current->security; |
2040 | dsec = dir->i_security; | 2040 | dsec = dir->i_security; |
@@ -2059,17 +2059,22 @@ static int selinux_inode_init_security(struct inode *inode, struct inode *dir, | |||
2059 | 2059 | ||
2060 | inode_security_set_sid(inode, newsid); | 2060 | inode_security_set_sid(inode, newsid); |
2061 | 2061 | ||
2062 | namep = kstrdup(XATTR_SELINUX_SUFFIX, GFP_KERNEL); | 2062 | if (name) { |
2063 | if (!namep) | 2063 | namep = kstrdup(XATTR_SELINUX_SUFFIX, GFP_KERNEL); |
2064 | return -ENOMEM; | 2064 | if (!namep) |
2065 | *name = namep; | 2065 | return -ENOMEM; |
2066 | *name = namep; | ||
2067 | } | ||
2066 | 2068 | ||
2067 | rc = security_sid_to_context(newsid, &context, len); | 2069 | if (value && len) { |
2068 | if (rc) { | 2070 | rc = security_sid_to_context(newsid, &context, &clen); |
2069 | kfree(namep); | 2071 | if (rc) { |
2070 | return rc; | 2072 | kfree(namep); |
2073 | return rc; | ||
2074 | } | ||
2075 | *value = context; | ||
2076 | *len = clen; | ||
2071 | } | 2077 | } |
2072 | *value = context; | ||
2073 | 2078 | ||
2074 | isec->security_attr_init = 1; | 2079 | isec->security_attr_init = 1; |
2075 | 2080 | ||