From 002f351e152dd9495f678e6f761c7bfb421814aa Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Fri, 14 Nov 2014 14:30:36 +0100 Subject: libcsupport: Minimal /etc/passwd and /etc/group Create a minimal /etc/passwd and /etc/group with user root and group root only with no passwords. --- cpukit/libcsupport/src/pwdgrp.c | 39 ++++++------ testsuites/psxtests/psxpasswd01/init.c | 54 +++++----------- testsuites/psxtests/psxpasswd01/psxpasswd01.scn | 82 +++++-------------------- 3 files changed, 49 insertions(+), 126 deletions(-) diff --git a/cpukit/libcsupport/src/pwdgrp.c b/cpukit/libcsupport/src/pwdgrp.c index a531b8b2ff..ea240975b4 100644 --- a/cpukit/libcsupport/src/pwdgrp.c +++ b/cpukit/libcsupport/src/pwdgrp.c @@ -59,22 +59,12 @@ static void pwdgrp_init(void) /* * Initialize /etc/passwd */ - init_file( - "/etc/passwd", - "root:*:0:0:root::/:/bin/sh\n" - "rtems:*:1:1:RTEMS Application::/:/bin/sh\n" - "tty:!:2:2:tty owner::/:/bin/false\n" - ); + init_file("/etc/passwd", "root::0:0::::\n"); /* * Initialize /etc/group */ - init_file( - "/etc/group", - "root:x:0:root\n" - "rtems:x:1:rtems\n" - "tty:x:2:tty\n" - ); + init_file("/etc/group", "root::0:\n"); } void _libcsupport_pwdgrp_init(void) @@ -265,9 +255,13 @@ int _libcsupport_scangr( /* * Determine number of members */ - for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) { - if(*cp == ',') - memcount++; + if (grmem[0] == '\0') { + memcount = 0; + } else { + for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) { + if(*cp == ',') + memcount++; + } } /* @@ -280,13 +274,18 @@ int _libcsupport_scangr( /* * Fill in pointer array */ - grp->gr_mem[0] = grmem; - for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) { - if(*cp == ',') { - *cp = '\0'; - grp->gr_mem[memcount++] = cp + 1; + if (grmem[0] == '\0') { + memcount = 0; + } else { + grp->gr_mem[0] = grmem; + for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) { + if(*cp == ',') { + *cp = '\0'; + grp->gr_mem[memcount++] = cp + 1; + } } } + grp->gr_mem[memcount] = NULL; return 1; } diff --git a/testsuites/psxtests/psxpasswd01/init.c b/testsuites/psxtests/psxpasswd01/init.c index cc618a5cf6..0f0f208f2a 100644 --- a/testsuites/psxtests/psxpasswd01/init.c +++ b/testsuites/psxtests/psxpasswd01/init.c @@ -98,17 +98,7 @@ rtems_task Init( rtems_test_assert( pw ); print_passwd( pw ); - puts( "Init - getpwent() (2) -- OK" ); - pw = getpwent(); - rtems_test_assert( pw ); - print_passwd( pw ); - - puts( "Init - getpwent() (3) -- OK" ); - pw = getpwent(); - rtems_test_assert( pw ); - print_passwd( pw ); - - puts( "Init - getpwent() (4) -- result should be NULL" ); + puts( "Init - getpwent() (2) -- result should be NULL" ); pw = getpwent(); rtems_test_assert( !pw ); @@ -119,17 +109,7 @@ rtems_task Init( rtems_test_assert( gr ); print_group( gr ); - puts( "Init - getgrent() (2) -- OK" ); - gr = getgrent(); - rtems_test_assert( gr ); - print_group( gr ); - - puts( "Init - getgrent() (3) -- OK" ); - gr = getgrent(); - rtems_test_assert( gr ); - print_group( gr ); - - puts( "Init - getgrent() (4) -- result should be NULL" ); + puts( "Init - getgrent() (2) -- result should be NULL" ); gr = getgrent(); rtems_test_assert( !gr ); @@ -139,11 +119,6 @@ rtems_task Init( rtems_test_assert( pw ); print_passwd( pw ); - puts( "Init - getpwnam(\"rtems\") -- OK" ); - pw = getpwnam( "rtems" ); - rtems_test_assert( pw ); - print_passwd( pw ); - puts( "Init - getpwnam(\"suser\") -- result should be NULL" ); pw = getpwnam( "suser" ); rtems_test_assert( !pw ); @@ -154,10 +129,14 @@ rtems_task Init( rtems_test_assert( pw ); print_passwd( pw ); - puts( "Init - getpwuid(1) -- OK" ); - pw = getpwuid( 1 ); - rtems_test_assert( pw ); - print_passwd( pw ); + rtems_test_assert( strcmp(pw->pw_name, "root") == 0 ); + rtems_test_assert( strcmp(pw->pw_passwd, "") == 0 ); + rtems_test_assert( pw->pw_uid == 0 ); + rtems_test_assert( pw->pw_gid == 0 ); + rtems_test_assert( strcmp(pw->pw_comment, "") == 0 ); + rtems_test_assert( strcmp(pw->pw_gecos, "") == 0 ); + rtems_test_assert( strcmp(pw->pw_dir, "") == 0 ); + rtems_test_assert( strcmp(pw->pw_shell, "") == 0 ); puts( "Init - getpwuid(4) -- result should be NULL" ); pw = getpwuid( 4 ); @@ -169,21 +148,16 @@ rtems_task Init( rtems_test_assert( gr ); print_group( gr ); - puts( "Init - getgrnam(\"rtems\") -- OK" ); - gr = getgrnam("rtems"); - rtems_test_assert( gr ); - print_group( gr ); - /* getgrgid */ puts( "Init - getgrgid(0) -- OK" ); gr = getgrgid(0); rtems_test_assert( gr ); print_group( gr ); - puts( "Init - getgrgid(1) -- OK" ); - gr = getgrgid(1); - rtems_test_assert( gr ); - print_group( gr ); + rtems_test_assert( strcmp(gr->gr_name, "root") == 0 ); + rtems_test_assert( strcmp(gr->gr_passwd, "") == 0 ); + rtems_test_assert( gr->gr_gid == 0 ); + rtems_test_assert( gr->gr_mem[0] == NULL ); puts( "Init - getgrgid(4) -- result should be NULL"); gr = getgrgid( 4 ); diff --git a/testsuites/psxtests/psxpasswd01/psxpasswd01.scn b/testsuites/psxtests/psxpasswd01/psxpasswd01.scn index a0d0a647ad..3a39643729 100644 --- a/testsuites/psxtests/psxpasswd01/psxpasswd01.scn +++ b/testsuites/psxtests/psxpasswd01/psxpasswd01.scn @@ -1,99 +1,49 @@ -Initialized console on port COM1 9600-8-N-1 - -*** PASSWORD/GROUP TEST - 01 *** +*** BEGIN OF TEST PSXPASSWD 1 *** Init - getpwent() -- OK, result should be NULL Init - getgrent() -- OK, result should be NULL Init - setpwent() -- OK Init - setgrent() -- OK Init - getpwent() (1) -- OK username: root - user password: * + user password: user ID: 0 group ID: 0 real name: - home directory: / - shell program: /bin/sh -Init - getpwent() (2) -- OK - username: rtems - user password: * - user ID: 1 - group ID: 1 - real name: - home directory: / - shell program: /bin/sh -Init - getpwent() (3) -- OK - username: tty - user password: ! - user ID: 2 - group ID: 2 - real name: - home directory: / - shell program: /bin/false -Init - getpwent() (4) -- result should be NULL + home directory: + shell program: +Init - getpwent() (2) -- result should be NULL Init - getgrent() (1) -- OK group name: root - group password: x + group password: group ID: 0 -Init - getgrent() (2) -- OK - group name: rtems - group password: x - group ID: 1 -Init - getgrent() (3) -- OK - group name: tty - group password: x - group ID: 2 -Init - getgrent() (4) -- result should be NULL +Init - getgrent() (2) -- result should be NULL Init - getpwnam("root") -- OK username: root - user password: * + user password: user ID: 0 group ID: 0 real name: - home directory: / - shell program: /bin/sh -Init - getpwnam("rtems") -- OK - username: rtems - user password: * - user ID: 1 - group ID: 1 - real name: - home directory: / - shell program: /bin/sh + home directory: + shell program: Init - getpwnam("suser") -- result should be NULL Init - getpwuid(0) -- OK username: root - user password: * + user password: user ID: 0 group ID: 0 real name: - home directory: / - shell program: /bin/sh -Init - getpwuid(1) -- OK - username: rtems - user password: * - user ID: 1 - group ID: 1 - real name: - home directory: / - shell program: /bin/sh + home directory: + shell program: Init - getpwuid(4) -- result should be NULL Init - getgrnam("root") -- OK group name: root - group password: x + group password: group ID: 0 -Init - getgrnam("rtems") -- OK - group name: rtems - group password: x - group ID: 1 Init - getgrgid(0) -- OK group name: root - group password: x + group password: group ID: 0 -Init - getgrgid(1) -- OK - group name: rtems - group password: x - group ID: 1 Init - getgrgid(4) -- result should be NULL Init - endpwent() -- OK Init - endgrent() -- OK -*** END OF PASSWORD/GROUP TEST - 01 *** +*** END OF TEST PSXPASSWD 1 *** -- cgit v1.2.3