source: rtems/testsuites/psxtests/psxpasswd01/init.c @ 002f351

4.115
Last change on this file since 002f351 was 002f351, checked in by Sebastian Huber <sebastian.huber@…>, on 11/14/14 at 13:30:36

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.

  • Property mode set to 100644
File size: 4.2 KB
Line 
1/*
2 *  COPYRIGHT (c) 1989-2012.
3 *  On-Line Applications Research Corporation (OAR).
4 *
5 *  The license and distribution terms for this file may be
6 *  found in the file LICENSE in this distribution or at
7 *  http://www.rtems.org/license/LICENSE.
8 */
9
10#ifdef HAVE_CONFIG_H
11#include "config.h"
12#endif
13
14#include <bsp.h>
15#include <pmacros.h>
16#include <sys/types.h>
17#include <pwd.h>
18#include <grp.h>
19
20const char rtems_test_name[] = "PSXPASSWD 1";
21
22/* forward declarations to avoid warnings */
23rtems_task Init(rtems_task_argument ignored);
24void print_passwd(struct passwd *pw);
25void print_group(struct group *gr);
26
27void print_passwd(
28  struct passwd *pw
29)
30{
31  printf(
32    "  username: %s\n"
33    "  user password: %s\n"
34    "  user ID: %d\n"
35    "  group ID: %d\n"
36    "  real name: %s\n"
37    "  home directory: %s\n"
38    "  shell program: %s\n",
39    pw->pw_name,
40    pw->pw_passwd,
41    pw->pw_uid,
42    pw->pw_gid,
43    pw->pw_gecos,
44    pw->pw_dir,
45    pw->pw_shell
46  );
47}
48 
49void print_group(
50  struct group *gr
51)
52{
53  printf(
54    "  group name: %s\n"
55    "  group  password: %s\n"
56    "  group  ID: %d\n",
57    gr->gr_name,
58    gr->gr_passwd,
59    gr->gr_gid
60  );
61
62  /* TBD print users in group */
63}
64 
65rtems_task Init(
66  rtems_task_argument ignored
67)
68{
69  struct passwd *pw;
70  struct group  *gr;
71
72  TEST_BEGIN();
73
74  /* getpwent */
75  puts( "Init - getpwent() -- OK, result should be NULL" );
76  pw = getpwent();
77  rtems_test_assert( !pw );
78
79  /* getgrent */
80  puts( "Init - getgrent() -- OK, result should be NULL" );
81  gr = getgrent();
82  rtems_test_assert( !gr );
83
84  /* setpwent */
85
86  puts( "Init - setpwent() -- OK" );
87  setpwent();
88
89  /* setgrent */
90
91  puts( "Init - setgrent() -- OK" );
92  setgrent();
93
94  /* getpwent */
95
96  puts( "Init - getpwent() (1) -- OK" );
97  pw = getpwent();
98  rtems_test_assert( pw );
99  print_passwd( pw );
100
101  puts( "Init - getpwent() (2) -- result should be NULL" );
102  pw = getpwent();
103  rtems_test_assert( !pw );
104
105  /* getgrent */
106
107  puts( "Init - getgrent() (1) -- OK" );
108  gr = getgrent();
109  rtems_test_assert( gr );
110  print_group( gr );
111
112  puts( "Init - getgrent() (2) -- result should be NULL" );
113  gr = getgrent();
114  rtems_test_assert( !gr );
115
116  /* getpwnam */
117  puts( "Init - getpwnam(\"root\") -- OK" );
118  pw = getpwnam( "root" );
119  rtems_test_assert( pw );
120  print_passwd( pw );
121
122  puts( "Init - getpwnam(\"suser\") -- result should be NULL" );
123  pw = getpwnam( "suser" );
124  rtems_test_assert( !pw );
125
126  /* getpwuid */
127  puts( "Init - getpwuid(0) -- OK" );
128  pw = getpwuid( 0 );
129  rtems_test_assert( pw );
130  print_passwd( pw );
131
132  rtems_test_assert( strcmp(pw->pw_name, "root") == 0 );
133  rtems_test_assert( strcmp(pw->pw_passwd, "") == 0 );
134  rtems_test_assert( pw->pw_uid == 0 );
135  rtems_test_assert( pw->pw_gid == 0 );
136  rtems_test_assert( strcmp(pw->pw_comment, "") == 0 );
137  rtems_test_assert( strcmp(pw->pw_gecos, "") == 0 );
138  rtems_test_assert( strcmp(pw->pw_dir, "") == 0 );
139  rtems_test_assert( strcmp(pw->pw_shell, "") == 0 );
140
141  puts( "Init - getpwuid(4) -- result should be NULL" );
142  pw = getpwuid( 4 );
143  rtems_test_assert( !pw );
144
145  /* getgrnam */
146  puts( "Init - getgrnam(\"root\") -- OK" );
147  gr = getgrnam("root");
148  rtems_test_assert( gr );
149  print_group( gr );
150
151  /* getgrgid */
152  puts( "Init - getgrgid(0) -- OK" );
153  gr = getgrgid(0);
154  rtems_test_assert( gr );
155  print_group( gr );
156
157  rtems_test_assert( strcmp(gr->gr_name, "root") == 0 );
158  rtems_test_assert( strcmp(gr->gr_passwd, "") == 0 );
159  rtems_test_assert( gr->gr_gid == 0 );
160  rtems_test_assert( gr->gr_mem[0] == NULL );
161
162  puts( "Init - getgrgid(4) -- result should be NULL");
163  gr = getgrgid( 4 );
164  rtems_test_assert( !gr );
165
166  /* endpwent */
167  puts( "Init - endpwent() -- OK" );
168  endpwent();
169
170  /* endgrent */
171  puts( "Init - endgrent() -- OK" );
172  endgrent();
173
174  TEST_END();
175  rtems_test_exit( 0 );
176}
177
178/* configuration information */
179
180#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
181#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
182
183#define CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM
184#define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 6
185
186#define CONFIGURE_MAXIMUM_TASKS 1
187#define CONFIGURE_INITIAL_EXTENSIONS RTEMS_TEST_INITIAL_EXTENSION
188
189#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
190
191#define CONFIGURE_INIT
192#include <rtems/confdefs.h>
193/* end of file */
Note: See TracBrowser for help on using the repository browser.