From 065d72ce7eefe5a40199f10f4399d53fa29fc6b7 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Mon, 17 Nov 2014 10:19:00 +0100 Subject: shell: Get supplementary group IDs in login check --- cpukit/libmisc/shell/login_check.c | 2 ++ testsuites/libtests/shell01/init.c | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/cpukit/libmisc/shell/login_check.c b/cpukit/libmisc/shell/login_check.c index 372d059631..9d853f8d1f 100644 --- a/cpukit/libmisc/shell/login_check.c +++ b/cpukit/libmisc/shell/login_check.c @@ -33,6 +33,7 @@ #include #include +#include bool rtems_shell_login_check( const char *user, @@ -76,6 +77,7 @@ bool rtems_shell_login_check( setgid(pw.pw_gid); seteuid(pw.pw_uid); setegid(pw.pw_gid); + rtems_current_user_env_getgroups(); } return ok; diff --git a/testsuites/libtests/shell01/init.c b/testsuites/libtests/shell01/init.c index 413ce6ebb6..248988b32b 100644 --- a/testsuites/libtests/shell01/init.c +++ b/testsuites/libtests/shell01/init.c @@ -25,6 +25,7 @@ #include #include +#include #include "tmacros.h" @@ -47,6 +48,7 @@ static void create_file(const char *name, const char *content) static void test(void) { + rtems_user_env_t *uenv; bool ok; int rv; @@ -73,6 +75,8 @@ static void test(void) "F::8:s,moop,t\n" ); + uenv = rtems_current_user_env_get(); + rv = setuid(0); rtems_test_assert(rv == 0); @@ -95,6 +99,7 @@ static void test(void) rtems_test_assert(geteuid() == 0); rtems_test_assert(getgid() == 0); rtems_test_assert(getegid() == 0); + rtems_test_assert(uenv->ngroups == 0); ok = rtems_shell_login_check("zero", NULL); rtems_test_assert(ok); @@ -102,6 +107,8 @@ static void test(void) rtems_test_assert(geteuid() == 3); rtems_test_assert(getgid() == 5); rtems_test_assert(getegid() == 5); + rtems_test_assert(uenv->ngroups == 1); + rtems_test_assert(uenv->groups[0] == 1); ok = rtems_shell_login_check("moop", "foo"); rtems_test_assert(ok); @@ -109,6 +116,12 @@ static void test(void) rtems_test_assert(geteuid() == 1); rtems_test_assert(getgid() == 3); rtems_test_assert(getegid() == 3); + rtems_test_assert(uenv->ngroups == 5); + rtems_test_assert(uenv->groups[0] == 1); + rtems_test_assert(uenv->groups[1] == 2); + rtems_test_assert(uenv->groups[2] == 4); + rtems_test_assert(uenv->groups[3] == 5); + rtems_test_assert(uenv->groups[4] == 8); } static void Init(rtems_task_argument arg) -- cgit v1.2.3