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.
This commit is contained in:
Sebastian Huber
2014-11-14 14:30:36 +01:00
parent 6935428a29
commit 002f351e15
3 changed files with 49 additions and 126 deletions

View File

@@ -59,22 +59,12 @@ static void pwdgrp_init(void)
/* /*
* Initialize /etc/passwd * Initialize /etc/passwd
*/ */
init_file( init_file("/etc/passwd", "root::0:0::::\n");
"/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"
);
/* /*
* Initialize /etc/group * Initialize /etc/group
*/ */
init_file( init_file("/etc/group", "root::0:\n");
"/etc/group",
"root:x:0:root\n"
"rtems:x:1:rtems\n"
"tty:x:2:tty\n"
);
} }
void _libcsupport_pwdgrp_init(void) void _libcsupport_pwdgrp_init(void)
@@ -265,9 +255,13 @@ int _libcsupport_scangr(
/* /*
* Determine number of members * Determine number of members
*/ */
for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) { if (grmem[0] == '\0') {
if(*cp == ',') memcount = 0;
memcount++; } else {
for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {
if(*cp == ',')
memcount++;
}
} }
/* /*
@@ -280,13 +274,18 @@ int _libcsupport_scangr(
/* /*
* Fill in pointer array * Fill in pointer array
*/ */
grp->gr_mem[0] = grmem; if (grmem[0] == '\0') {
for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) { memcount = 0;
if(*cp == ',') { } else {
*cp = '\0'; grp->gr_mem[0] = grmem;
grp->gr_mem[memcount++] = cp + 1; for (cp = grmem, memcount = 1 ; *cp != 0 ; cp++) {
if(*cp == ',') {
*cp = '\0';
grp->gr_mem[memcount++] = cp + 1;
}
} }
} }
grp->gr_mem[memcount] = NULL; grp->gr_mem[memcount] = NULL;
return 1; return 1;
} }

View File

@@ -98,17 +98,7 @@ rtems_task Init(
rtems_test_assert( pw ); rtems_test_assert( pw );
print_passwd( pw ); print_passwd( pw );
puts( "Init - getpwent() (2) -- OK" ); puts( "Init - getpwent() (2) -- result should be NULL" );
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" );
pw = getpwent(); pw = getpwent();
rtems_test_assert( !pw ); rtems_test_assert( !pw );
@@ -119,17 +109,7 @@ rtems_task Init(
rtems_test_assert( gr ); rtems_test_assert( gr );
print_group( gr ); print_group( gr );
puts( "Init - getgrent() (2) -- OK" ); puts( "Init - getgrent() (2) -- result should be NULL" );
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" );
gr = getgrent(); gr = getgrent();
rtems_test_assert( !gr ); rtems_test_assert( !gr );
@@ -139,11 +119,6 @@ rtems_task Init(
rtems_test_assert( pw ); rtems_test_assert( pw );
print_passwd( 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" ); puts( "Init - getpwnam(\"suser\") -- result should be NULL" );
pw = getpwnam( "suser" ); pw = getpwnam( "suser" );
rtems_test_assert( !pw ); rtems_test_assert( !pw );
@@ -154,10 +129,14 @@ rtems_task Init(
rtems_test_assert( pw ); rtems_test_assert( pw );
print_passwd( pw ); print_passwd( pw );
puts( "Init - getpwuid(1) -- OK" ); rtems_test_assert( strcmp(pw->pw_name, "root") == 0 );
pw = getpwuid( 1 ); rtems_test_assert( strcmp(pw->pw_passwd, "") == 0 );
rtems_test_assert( pw ); rtems_test_assert( pw->pw_uid == 0 );
print_passwd( pw ); 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" ); puts( "Init - getpwuid(4) -- result should be NULL" );
pw = getpwuid( 4 ); pw = getpwuid( 4 );
@@ -169,21 +148,16 @@ rtems_task Init(
rtems_test_assert( gr ); rtems_test_assert( gr );
print_group( gr ); print_group( gr );
puts( "Init - getgrnam(\"rtems\") -- OK" );
gr = getgrnam("rtems");
rtems_test_assert( gr );
print_group( gr );
/* getgrgid */ /* getgrgid */
puts( "Init - getgrgid(0) -- OK" ); puts( "Init - getgrgid(0) -- OK" );
gr = getgrgid(0); gr = getgrgid(0);
rtems_test_assert( gr ); rtems_test_assert( gr );
print_group( gr ); print_group( gr );
puts( "Init - getgrgid(1) -- OK" ); rtems_test_assert( strcmp(gr->gr_name, "root") == 0 );
gr = getgrgid(1); rtems_test_assert( strcmp(gr->gr_passwd, "") == 0 );
rtems_test_assert( gr ); rtems_test_assert( gr->gr_gid == 0 );
print_group( gr ); rtems_test_assert( gr->gr_mem[0] == NULL );
puts( "Init - getgrgid(4) -- result should be NULL"); puts( "Init - getgrgid(4) -- result should be NULL");
gr = getgrgid( 4 ); gr = getgrgid( 4 );

View File

@@ -1,99 +1,49 @@
Initialized console on port COM1 9600-8-N-1 *** BEGIN OF TEST PSXPASSWD 1 ***
*** PASSWORD/GROUP TEST - 01 ***
Init - getpwent() -- OK, result should be NULL Init - getpwent() -- OK, result should be NULL
Init - getgrent() -- OK, result should be NULL Init - getgrent() -- OK, result should be NULL
Init - setpwent() -- OK Init - setpwent() -- OK
Init - setgrent() -- OK Init - setgrent() -- OK
Init - getpwent() (1) -- OK Init - getpwent() (1) -- OK
username: root username: root
user password: * user password:
user ID: 0 user ID: 0
group ID: 0 group ID: 0
real name: real name:
home directory: / home directory:
shell program: /bin/sh shell program:
Init - getpwent() (2) -- OK Init - getpwent() (2) -- result should be NULL
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
Init - getgrent() (1) -- OK Init - getgrent() (1) -- OK
group name: root group name: root
group password: x group password:
group ID: 0 group ID: 0
Init - getgrent() (2) -- OK Init - getgrent() (2) -- result should be NULL
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 - getpwnam("root") -- OK Init - getpwnam("root") -- OK
username: root username: root
user password: * user password:
user ID: 0 user ID: 0
group ID: 0 group ID: 0
real name: real name:
home directory: / home directory:
shell program: /bin/sh shell program:
Init - getpwnam("rtems") -- OK
username: rtems
user password: *
user ID: 1
group ID: 1
real name:
home directory: /
shell program: /bin/sh
Init - getpwnam("suser") -- result should be NULL Init - getpwnam("suser") -- result should be NULL
Init - getpwuid(0) -- OK Init - getpwuid(0) -- OK
username: root username: root
user password: * user password:
user ID: 0 user ID: 0
group ID: 0 group ID: 0
real name: real name:
home directory: / home directory:
shell program: /bin/sh shell program:
Init - getpwuid(1) -- OK
username: rtems
user password: *
user ID: 1
group ID: 1
real name:
home directory: /
shell program: /bin/sh
Init - getpwuid(4) -- result should be NULL Init - getpwuid(4) -- result should be NULL
Init - getgrnam("root") -- OK Init - getgrnam("root") -- OK
group name: root group name: root
group password: x group password:
group ID: 0 group ID: 0
Init - getgrnam("rtems") -- OK
group name: rtems
group password: x
group ID: 1
Init - getgrgid(0) -- OK Init - getgrgid(0) -- OK
group name: root group name: root
group password: x group password:
group ID: 0 group ID: 0
Init - getgrgid(1) -- OK
group name: rtems
group password: x
group ID: 1
Init - getgrgid(4) -- result should be NULL Init - getgrgid(4) -- result should be NULL
Init - endpwent() -- OK Init - endpwent() -- OK
Init - endgrent() -- OK Init - endgrent() -- OK
*** END OF PASSWORD/GROUP TEST - 01 *** *** END OF TEST PSXPASSWD 1 ***