diff options
author | Eric Andersen <andersen@codepoet.org> | 2003-07-03 10:07:04 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2003-07-03 10:07:04 +0000 |
commit | 9e48045e45df7e3e205575a4eb3dc39d634b05aa (patch) | |
tree | e8f993dffc34380fbcc54cc858c81da594bdb95b /coreutils/id.c | |
parent | c48d49ad988a4163cff7f38ee4bd1f9886d0ed11 (diff) | |
download | busybox-w32-9e48045e45df7e3e205575a4eb3dc39d634b05aa.tar.gz busybox-w32-9e48045e45df7e3e205575a4eb3dc39d634b05aa.tar.bz2 busybox-w32-9e48045e45df7e3e205575a4eb3dc39d634b05aa.zip |
Patch from Russell Coker:
I've attached my latest SE Linux patch for busybox against the latest CVS
version of busybox.
Diffstat (limited to 'coreutils/id.c')
-rw-r--r-- | coreutils/id.c | 34 |
1 files changed, 29 insertions, 5 deletions
diff --git a/coreutils/id.c b/coreutils/id.c index 9b2d60dc7..971e7cdad 100644 --- a/coreutils/id.c +++ b/coreutils/id.c | |||
@@ -28,9 +28,13 @@ | |||
28 | #include <getopt.h> | 28 | #include <getopt.h> |
29 | #include <string.h> | 29 | #include <string.h> |
30 | #include <sys/types.h> | 30 | #include <sys/types.h> |
31 | #ifdef CONFIG_SELINUX | ||
32 | #include <proc_secure.h> | ||
33 | #include <flask_util.h> | ||
34 | #endif | ||
31 | 35 | ||
32 | #define NO_GROUP 1 | 36 | #define JUST_USER 1 |
33 | #define NO_USER 2 | 37 | #define JUST_GROUP 2 |
34 | #define PRINT_REAL 4 | 38 | #define PRINT_REAL 4 |
35 | #define NAME_NOT_NUMBER 8 | 39 | #define NAME_NOT_NUMBER 8 |
36 | 40 | ||
@@ -40,10 +44,13 @@ extern int id_main(int argc, char **argv) | |||
40 | long pwnam, grnam; | 44 | long pwnam, grnam; |
41 | int uid, gid; | 45 | int uid, gid; |
42 | int flags; | 46 | int flags; |
47 | #ifdef CONFIG_SELINUX | ||
48 | int is_flask_enabled_flag = is_flask_enabled(); | ||
49 | #endif | ||
43 | 50 | ||
44 | flags = bb_getopt_ulflags(argc, argv, "ugrn"); | 51 | flags = bb_getopt_ulflags(argc, argv, "ugrn"); |
45 | 52 | ||
46 | if (((flags & (NO_USER | NO_GROUP)) == (NO_USER | NO_GROUP)) | 53 | if (((flags & (JUST_USER | JUST_GROUP)) == (JUST_USER | JUST_GROUP)) |
47 | || (argc > optind + 1) | 54 | || (argc > optind + 1) |
48 | ) { | 55 | ) { |
49 | bb_show_usage(); | 56 | bb_show_usage(); |
@@ -67,9 +74,9 @@ extern int id_main(int argc, char **argv) | |||
67 | pwnam=my_getpwnam(user); | 74 | pwnam=my_getpwnam(user); |
68 | grnam=my_getgrnam(group); | 75 | grnam=my_getgrnam(group); |
69 | 76 | ||
70 | if (flags & (NO_GROUP | NO_USER)) { | 77 | if (flags & (JUST_GROUP | JUST_USER)) { |
71 | char *s = group; | 78 | char *s = group; |
72 | if (flags & NO_GROUP) { | 79 | if (flags & JUST_USER) { |
73 | s = user; | 80 | s = user; |
74 | grnam = pwnam; | 81 | grnam = pwnam; |
75 | } | 82 | } |
@@ -79,7 +86,24 @@ extern int id_main(int argc, char **argv) | |||
79 | printf("%ld\n", grnam); | 86 | printf("%ld\n", grnam); |
80 | } | 87 | } |
81 | } else { | 88 | } else { |
89 | #ifdef CONFIG_SELINUX | ||
90 | printf("uid=%ld(%s) gid=%ld(%s)", pwnam, user, grnam, group); | ||
91 | if(is_flask_enabled_flag) | ||
92 | { | ||
93 | security_id_t mysid = getsecsid(); | ||
94 | char context[80]; | ||
95 | int len = sizeof(context); | ||
96 | context[0] = '\0'; | ||
97 | if(security_sid_to_context(mysid, context, &len)) | ||
98 | strcpy(context, "unknown"); | ||
99 | printf(" context=%s\n", context); | ||
100 | } | ||
101 | else | ||
102 | printf("\n"); | ||
103 | #else | ||
82 | printf("uid=%ld(%s) gid=%ld(%s)\n", pwnam, user, grnam, group); | 104 | printf("uid=%ld(%s) gid=%ld(%s)\n", pwnam, user, grnam, group); |
105 | #endif | ||
106 | |||
83 | } | 107 | } |
84 | 108 | ||
85 | bb_fflush_stdout_and_exit(0); | 109 | bb_fflush_stdout_and_exit(0); |