From 6414c3bc394f86a5d6a5f02c934469e21bbbc923 Mon Sep 17 00:00:00 2001 From: Jason Zaman Date: Wed, 16 Nov 2016 12:55:49 +0800 Subject: selinux: fix SIGSEGV with invalid contexts Fixes: https://github.com/openrc/openrc/issues/104 --- src/rc/rc-selinux.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'src/rc/rc-selinux.c') diff --git a/src/rc/rc-selinux.c b/src/rc/rc-selinux.c index a792fe28..2eb631a6 100644 --- a/src/rc/rc-selinux.c +++ b/src/rc/rc-selinux.c @@ -334,7 +334,19 @@ void selinux_setup(char **argv) /* extract the type from the 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 */ context_free(curr_con); free(curr_context); -- cgit v1.2.3