diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2008-07-22 20:12:02 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2008-07-22 20:12:02 +0000 |
commit | 4aeb44ee37db62c85c20889a80dfd565f6e0ea79 (patch) | |
tree | 38b725d187b5114eebe1b67144e27c0fdc325163 | |
parent | 73814f5ee2d9046dd7aeac975fdee1fa0900478d (diff) | |
download | cygnal-4aeb44ee37db62c85c20889a80dfd565f6e0ea79.tar.gz cygnal-4aeb44ee37db62c85c20889a80dfd565f6e0ea79.tar.bz2 cygnal-4aeb44ee37db62c85c20889a80dfd565f6e0ea79.zip |
* mkgroup.c (main): Remove special root group code. Only print
SYSTEM group in case of printing local machine or local domain groups.
-rw-r--r-- | winsup/utils/ChangeLog | 5 | ||||
-rw-r--r-- | winsup/utils/mkgroup.c | 41 |
2 files changed, 22 insertions, 24 deletions
diff --git a/winsup/utils/ChangeLog b/winsup/utils/ChangeLog index 8a8137d05..91ab848fc 100644 --- a/winsup/utils/ChangeLog +++ b/winsup/utils/ChangeLog @@ -1,5 +1,10 @@ 2008-07-22 Corinna Vinschen <corinna@vinschen.de> + * mkgroup.c (main): Remove special root group code. Only print + SYSTEM group in case of printing local machine or local domain groups. + +2008-07-22 Corinna Vinschen <corinna@vinschen.de> + * Makefile.in (cygcheck.exe): Link against ntdll. * bloda.cc: Use statically linked functions throughout. * cygpath.cc: Drop 9x considerations. diff --git a/winsup/utils/mkgroup.c b/winsup/utils/mkgroup.c index a82ae3b1b..89a13fd67 100644 --- a/winsup/utils/mkgroup.c +++ b/winsup/utils/mkgroup.c @@ -588,11 +588,11 @@ main (int argc, char **argv) domlist_t domains[16]; char *opt; int print_current = 0; + int print_system = 0; const char *sep_char = "\\"; int id_offset = 10000; int c, i, off; char *disp_groupname = NULL; - int isRoot = 0; BOOL in_domain; if (!isatty (1)) @@ -632,7 +632,8 @@ main (int argc, char **argv) if ((!locals[i].str && !opt) || (locals[i].str && opt && !strcmp (locals[i].str, opt))) goto skip_local; - locals[print_local].str = opt; + if (!(locals[print_local].str = opt)) + print_system = 1; locals[print_local++].with_dom = c == 'L'; skip_local: break; @@ -650,7 +651,8 @@ main (int argc, char **argv) if ((!domains[i].str && !opt) || (domains[i].str && opt && !strcmp (domains[i].str, opt))) goto skip_domain; - domains[print_domain].str = opt; + if (!(domains[print_domain].str = opt)) + print_system = 1; domains[print_domain++].with_dom = c == 'D'; skip_domain: break; @@ -684,7 +686,6 @@ main (int argc, char **argv) break; case 'g': disp_groupname = optarg; - isRoot = !strcmp(disp_groupname, "root"); break; case 'h': usage (stdout); @@ -701,32 +702,24 @@ main (int argc, char **argv) usage (stdout); /* Get 'system' group */ - if (!disp_groupname && (print_local > 0 || print_domain > 0)) + if (!disp_groupname && print_system) print_special (&sid_nt_auth, 1, SECURITY_LOCAL_SYSTEM_RID, 0, 0, 0, 0, 0, 0, 0); off = 1; - if (isRoot) + for (i = 0; i < print_local; ++i) { - /* Very special feature for the oncoming future: - Create a "root" group being actually the local Administrators group. - Printing root disables printing any other "real" local group. */ - printf ("root:S-1-5-32-544:0:\n"); + if (locals[i].str) + { + if (!enum_local_groups (FALSE, locals + i, sep_char, + id_offset * off, disp_groupname)) + enum_groups (FALSE, locals + i, sep_char, id_offset * off++, + disp_groupname); + } + else if (!enum_local_groups (FALSE, locals + i, sep_char, 0, + disp_groupname)) + enum_groups (FALSE, locals + i, sep_char, 0, disp_groupname); } - else - for (i = 0; i < print_local; ++i) - { - if (locals[i].str) - { - if (!enum_local_groups (FALSE, locals + i, sep_char, - id_offset * off, disp_groupname)) - enum_groups (FALSE, locals + i, sep_char, id_offset * off++, - disp_groupname); - } - else if (!enum_local_groups (FALSE, locals + i, sep_char, 0, - disp_groupname)) - enum_groups (FALSE, locals + i, sep_char, 0, disp_groupname); - } for (i = 0; i < print_domain; ++i) { |