aboutsummaryrefslogtreecommitdiff
path: root/loader/loader.c
diff options
context:
space:
mode:
authorJon Ashburn <jon@lunarg.com>2016-04-04 13:52:53 -0600
committerJon Ashburn <jon@lunarg.com>2016-04-04 16:16:24 -0600
commitb78c251d720b75436238bcd44dc366ba49e6d9ed (patch)
tree862b7e5c532c049a2b4b16dbc925841b5b2244d0 /loader/loader.c
parent8d26fc88152cfe3755dbd7ea6a0e399c2921b307 (diff)
downloadusermoji-b78c251d720b75436238bcd44dc366ba49e6d9ed.tar.xz
loader: ghlvl #204, Use __secure_getenv if secure_getenv is unavailable
Also add group id check to getenv suid check in loader. Change-Id: Icbc08258498f893ee5fce144c043bdc6bd8e5423
Diffstat (limited to 'loader/loader.c')
-rw-r--r--loader/loader.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/loader/loader.c b/loader/loader.c
index 8fff9df0..b4dbe553 100644
--- a/loader/loader.c
+++ b/loader/loader.c
@@ -52,6 +52,12 @@
#include "cJSON.h"
#include "murmurhash.h"
+#if defined(__GNUC__)
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 17)
+# define secure_getenv __secure_getenv
+# endif
+#endif
+
static loader_platform_dl_handle
loader_add_layer_lib(const struct loader_instance *inst, const char *chain_type,
struct loader_layer_properties *layer_prop);
@@ -2237,7 +2243,7 @@ static void loader_get_manifest_files(const struct loader_instance *inst,
if (env_override != NULL && (override = loader_getenv(env_override))) {
#if !defined(_WIN32)
- if (geteuid() != getuid()) {
+ if (geteuid() != getuid() || getegid() != getgid()) {
/* Don't allow setuid apps to use the env var: */
loader_free_getenv(override);
override = NULL;