mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	selinux: load the initial SIDs upon every policy load
Always load the initial SIDs, even in the case of a policy reload and not just at the initial policy load. This comes particularly handy after the introduction of a recent patch for enabling runtime switching between different policy types, although this patch is in theory independent from that feature. Signed-off-by: Guido Trentalancia <guido@trentalancia.com> Acked-by: Stephen Smalley <sds@tycho.nsa.gov> Signed-off-by: James Morris <jmorris@namei.org>
This commit is contained in:
		
							parent
							
								
									b6cac5a30b
								
							
						
					
					
						commit
						42596eafdd
					
				
					 1 changed files with 12 additions and 4 deletions
				
			
		| 
						 | 
					@ -1506,7 +1506,10 @@ static int clone_sid(u32 sid,
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct sidtab *s = arg;
 | 
						struct sidtab *s = arg;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return sidtab_insert(s, sid, context);
 | 
						if (sid > SECINITSID_NUM)
 | 
				
			||||||
 | 
							return sidtab_insert(s, sid, context);
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
							return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static inline int convert_context_handle_invalid_context(struct context *context)
 | 
					static inline int convert_context_handle_invalid_context(struct context *context)
 | 
				
			||||||
| 
						 | 
					@ -1552,7 +1555,10 @@ static int convert_context(u32 key,
 | 
				
			||||||
	struct user_datum *usrdatum;
 | 
						struct user_datum *usrdatum;
 | 
				
			||||||
	char *s;
 | 
						char *s;
 | 
				
			||||||
	u32 len;
 | 
						u32 len;
 | 
				
			||||||
	int rc;
 | 
						int rc = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (key <= SECINITSID_NUM)
 | 
				
			||||||
 | 
							goto out;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	args = p;
 | 
						args = p;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1712,9 +1718,11 @@ int security_load_policy(void *data, size_t len)
 | 
				
			||||||
	if (policydb_read(&newpolicydb, fp))
 | 
						if (policydb_read(&newpolicydb, fp))
 | 
				
			||||||
		return -EINVAL;
 | 
							return -EINVAL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (sidtab_init(&newsidtab)) {
 | 
						rc = policydb_load_isids(&newpolicydb, &newsidtab);
 | 
				
			||||||
 | 
						if (rc) {
 | 
				
			||||||
 | 
							printk(KERN_ERR "SELinux:  unable to load the initial SIDs\n");
 | 
				
			||||||
		policydb_destroy(&newpolicydb);
 | 
							policydb_destroy(&newpolicydb);
 | 
				
			||||||
		return -ENOMEM;
 | 
							return rc;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (selinux_set_mapping(&newpolicydb, secclass_map,
 | 
						if (selinux_set_mapping(&newpolicydb, secclass_map,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue