diff options
Diffstat (limited to 'security/selinux/ss/conditional.c')
| -rw-r--r-- | security/selinux/ss/conditional.c | 11 | 
1 files changed, 3 insertions, 8 deletions
diff --git a/security/selinux/ss/conditional.c b/security/selinux/ss/conditional.c index 377d148e7157..62c6773be0b7 100644 --- a/security/selinux/ss/conditional.c +++ b/security/selinux/ss/conditional.c @@ -402,19 +402,14 @@ static int cond_read_node(struct policydb *p, struct cond_node *node, void *fp)  	int rc;  	struct cond_expr *expr = NULL, *last = NULL; -	rc = next_entry(buf, fp, sizeof(u32)); +	rc = next_entry(buf, fp, sizeof(u32) * 2);  	if (rc) -		return rc; +		goto err;  	node->cur_state = le32_to_cpu(buf[0]); -	len = 0; -	rc = next_entry(buf, fp, sizeof(u32)); -	if (rc) -		return rc; -  	/* expr */ -	len = le32_to_cpu(buf[0]); +	len = le32_to_cpu(buf[1]);  	for (i = 0; i < len; i++) {  		rc = next_entry(buf, fp, sizeof(u32) * 2);  |