diff options
Diffstat (limited to 'security/selinux/hooks.c')
| -rw-r--r-- | security/selinux/hooks.c | 15 | 
1 files changed, 10 insertions, 5 deletions
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c index 94c45a1531a..79690f401a5 100644 --- a/security/selinux/hooks.c +++ b/security/selinux/hooks.c @@ -2791,11 +2791,16 @@ static int selinux_inode_setxattr(struct dentry *dentry, const char *name,  			/* We strip a nul only if it is at the end, otherwise the  			 * context contains a nul and we should audit that */ -			str = value; -			if (str[size - 1] == '\0') -				audit_size = size - 1; -			else -				audit_size = size; +			if (value) { +				str = value; +				if (str[size - 1] == '\0') +					audit_size = size - 1; +				else +					audit_size = size; +			} else { +				str = ""; +				audit_size = 0; +			}  			ab = audit_log_start(current->audit_context, GFP_ATOMIC, AUDIT_SELINUX_ERR);  			audit_log_format(ab, "op=setxattr invalid_context=");  			audit_log_n_untrustedstring(ab, value, audit_size);  |