summaryrefslogtreecommitdiffstats
path: root/testsuites
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2014-11-17 07:53:01 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2014-11-20 10:30:22 +0100
commitffa71f1cd0af6682aca1da3b05fed02f64ec7e5b (patch)
tree76fb95010a2698dfff7185b96045587ce9b45ff7 /testsuites
parentlibcsupport: Use POSIX key for getgrent() (diff)
downloadrtems-ffa71f1cd0af6682aca1da3b05fed02f64ec7e5b.tar.bz2
libcsupport: Implement getgroups()
Diffstat (limited to 'testsuites')
-rw-r--r--testsuites/libtests/pwdgrp01/init.c41
-rw-r--r--testsuites/libtests/pwdgrp01/pwdgrp01.doc2
-rw-r--r--testsuites/psxtests/psxid01/init.c53
-rw-r--r--testsuites/psxtests/psxid01/psxid01.scn15
4 files changed, 103 insertions, 8 deletions
diff --git a/testsuites/libtests/pwdgrp01/init.c b/testsuites/libtests/pwdgrp01/init.c
index f1be7bbfcd..86f8e9030a 100644
--- a/testsuites/libtests/pwdgrp01/init.c
+++ b/testsuites/libtests/pwdgrp01/init.c
@@ -17,9 +17,12 @@
#endif
#include <sys/stat.h>
+#include <sys/types.h>
+#include <errno.h>
#include <grp.h>
#include <pwd.h>
#include <stdio.h>
+#include <unistd.h>
#include "tmacros.h"
@@ -69,6 +72,7 @@ static void test(void)
struct passwd *pwd_res;
struct group *grp_res;
char buf[256];
+ gid_t grps[5];
rv = mkdir("/etc", S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH);
rtems_test_assert(rv == 0);
@@ -80,7 +84,14 @@ static void test(void)
create_file(
"/etc/group",
+ "A::1:moop,u,v,w\n"
+ "B::2:moop\n"
"blub:bar:3:moop\n"
+ "C::4:l,m,n,moop\n"
+ "D::5:moop,moop\n"
+ "E::6:x\n"
+ "E::7:y,z\n"
+ "F::8:s,moop,t\n"
);
memset(&pwd, 0xff, sizeof(pwd));
@@ -106,6 +117,34 @@ static void test(void)
rtems_test_assert(rv == 0);
rtems_test_assert(&grp == grp_res);
assert_grp(grp_res);
+
+ rv = setuid(0);
+ rtems_test_assert(rv == 0);
+
+ errno = 0;
+ rv = getgroups(0, NULL);
+ rtems_test_assert(rv == -1);
+ rtems_test_assert(errno == EINVAL);
+
+ rv = setuid(1);
+ rtems_test_assert(rv == 0);
+
+ rv = getgroups(0, NULL);
+ rtems_test_assert(rv == 5);
+
+ errno = 0;
+ rv = getgroups(1, &grps[0]);
+ rtems_test_assert(rv == -1);
+ rtems_test_assert(errno == EINVAL);
+
+ memset(&grps[0], 0xff, sizeof(grps));
+ rv = getgroups(5, &grps[0]);
+ rtems_test_assert(rv == 5);
+ rtems_test_assert(grps[0] == 1);
+ rtems_test_assert(grps[1] == 2);
+ rtems_test_assert(grps[2] == 4);
+ rtems_test_assert(grps[3] == 5);
+ rtems_test_assert(grps[4] == 8);
}
static void Init(rtems_task_argument arg)
@@ -126,6 +165,8 @@ static void Init(rtems_task_argument arg)
#define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 4
#define CONFIGURE_MAXIMUM_TASKS 1
+#define CONFIGURE_MAXIMUM_POSIX_KEYS 1
+#define CONFIGURE_MAXIMUM_POSIX_KEY_VALUE_PAIRS 1
#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
diff --git a/testsuites/libtests/pwdgrp01/pwdgrp01.doc b/testsuites/libtests/pwdgrp01/pwdgrp01.doc
index eaba717769..36b81d180b 100644
--- a/testsuites/libtests/pwdgrp01/pwdgrp01.doc
+++ b/testsuites/libtests/pwdgrp01/pwdgrp01.doc
@@ -9,6 +9,7 @@ directives:
- getpwuid_r
- getgrnam_r
- getgrgid_r
+ - getgroups
concepts:
@@ -17,3 +18,4 @@ concepts:
custom /etc/passwd.
- Ensure that getgrnam_r() and getgrgid_r() return the values specified by
custom /etc/group.
+ - Ensure that getgroups() returns the values specified by custom /etc/group.
diff --git a/testsuites/psxtests/psxid01/init.c b/testsuites/psxtests/psxid01/init.c
index 4224840af5..5aa03999df 100644
--- a/testsuites/psxtests/psxid01/init.c
+++ b/testsuites/psxtests/psxid01/init.c
@@ -34,9 +34,11 @@ void test_gid(void)
int sc;
gid = getegid();
+ rtems_test_assert( gid == 0 );
printf( "getegid = %d\n", gid );
gid = getgid();
+ rtems_test_assert( gid == 0 );
printf( "getgid = %d\n", gid );
puts( "setgid(5)" );
@@ -44,11 +46,34 @@ void test_gid(void)
rtems_test_assert( sc == 0 );
gid = getegid();
+ rtems_test_assert( gid == 0 );
printf( "getegid = %d\n", gid );
gid = getgid();
+ rtems_test_assert( gid == 5 );
printf( "getgid = %d\n", gid );
+ puts( "setegid(5)" );
+ sc = setegid(5);
+ rtems_test_assert( sc == 0 );
+
+ gid = getegid();
+ rtems_test_assert( gid == 5 );
+ printf( "getegid = %d\n", gid );
+
+ gid = getgid();
+ rtems_test_assert( gid == 5 );
+ printf( "getgid = %d\n", gid );
+
+ puts( "setgid(0)" );
+ sc = setgid(0);
+ rtems_test_assert( sc == 0 );
+
+ puts( "setegid(0)" );
+ sc = setegid(0);
+ rtems_test_assert( sc == 0 );
+
+ errno = 0;
puts( "setpgid(getpid(), 10) - ENOSYS" );
sc = setpgid( getpid(), 10 );
rtems_test_assert( sc == -1 );
@@ -61,9 +86,11 @@ void test_uid(void)
int sc;
uid = geteuid();
+ rtems_test_assert( uid == 0 );
printf( "geteuid = %d\n", uid );
uid = getuid();
+ rtems_test_assert( uid == 0 );
printf( "getuid = %d\n", uid );
puts( "setuid(5)" );
@@ -71,11 +98,32 @@ void test_uid(void)
rtems_test_assert( sc == 0 );
uid = geteuid();
+ rtems_test_assert( uid == 0 );
printf( "geteuid = %d\n", uid );
uid = getuid();
+ rtems_test_assert( uid == 5 );
printf( "getuid = %d\n", uid );
+ puts( "seteuid(5)" );
+ sc = seteuid(5);
+ rtems_test_assert( sc == 0 );
+
+ uid = geteuid();
+ rtems_test_assert( uid == 5 );
+ printf( "geteuid = %d\n", uid );
+
+ uid = getuid();
+ rtems_test_assert( uid == 5 );
+ printf( "getuid = %d\n", uid );
+
+ puts( "seteuid(0)" );
+ sc = seteuid(0);
+ rtems_test_assert( sc == 0 );
+
+ puts( "setuid(0)" );
+ sc = setuid(0);
+ rtems_test_assert( sc == 0 );
}
pid_t __getpid(void);
@@ -106,11 +154,6 @@ void test_pid(void)
puts( "getpgrp - return local node - OK" );
pid = getpgrp();
printf( "getpgrp returned %d\n", pid );
-
- puts( "getgroups - return 0 - OK" );
- sc = getgroups( 0, NULL );
- rtems_test_assert( sc == 0 );
-
}
void test_getlogin(void)
diff --git a/testsuites/psxtests/psxid01/psxid01.scn b/testsuites/psxtests/psxid01/psxid01.scn
index 8b9143d113..e0ea2a0ea2 100644
--- a/testsuites/psxtests/psxid01/psxid01.scn
+++ b/testsuites/psxtests/psxid01/psxid01.scn
@@ -1,9 +1,14 @@
-*** TEST ID 01 ***
+*** BEGIN OF TEST PSXID 1 ***
getegid = 0
getgid = 0
setgid(5)
getegid = 0
getgid = 5
+setegid(5)
+getegid = 5
+getgid = 5
+setgid(0)
+setegid(0)
setpgid(getpid(), 10) - ENOSYS
geteuid = 0
@@ -11,6 +16,11 @@ getuid = 0
setuid(5)
geteuid = 0
getuid = 5
+seteuid(5)
+geteuid = 5
+getuid = 5
+seteuid(0)
+setuid(0)
getpid = 1
__getpid = 1
@@ -18,7 +28,6 @@ getppid = 0
setsid - EPERM
getpgrp - return local node - OK
getpgrp returned 1
-getgroups - return 0 - OK
setuid(5)
getlogin() -- ()
@@ -26,4 +35,4 @@ setuid(0)
getlogin() -- (root)
getlogin_r(NULL, LOGIN_NAME_MAX) -- EFAULT
getlogin_r(buffer, 0) -- ERANGE
-*** END OF TEST ID 01 ***
+*** END OF TEST PSXID 1 ***