selinux: fix SIGSEGV with invalid contexts

Fixes: https://github.com/openrc/openrc/issues/104
This commit is contained in:
Jason Zaman 2016-11-16 12:55:49 +08:00 committed by William Hubbs
parent 4f9bd7e4db
commit 6414c3bc39

View File

@ -334,7 +334,19 @@ void selinux_setup(char **argv)
/* extract the type from the context */ /* extract the type from the context */
curr_con = context_new(curr_context); curr_con = context_new(curr_context);
curr_t = xstrdup(context_type_get(curr_con)); if (!curr_con) {
free(curr_context);
goto out;
}
curr_t = context_type_get(curr_con);
if (!curr_t) {
context_free(curr_con);
free(curr_context);
goto out;
}
curr_t = xstrdup(curr_t);
/* dont need them anymore so free() now */ /* dont need them anymore so free() now */
context_free(curr_con); context_free(curr_con);
free(curr_context); free(curr_context);