]> granicus.if.org Git - shadow/commitdiff
* NEWS, src/groupadd.c, man/groupadd.8.xml: Add --root option. Open
authornekral-guest <nekral-guest@5a98b0ae-9ef6-0310-add3-de5d479b70d7>
Sun, 6 Nov 2011 18:37:51 +0000 (18:37 +0000)
committernekral-guest <nekral-guest@5a98b0ae-9ef6-0310-add3-de5d479b70d7>
Sun, 6 Nov 2011 18:37:51 +0000 (18:37 +0000)
audit and syslog after the potential chroot.
* src/groupmod.c: The index of long options is not used.

ChangeLog
NEWS
man/groupmod.8.xml
src/groupadd.c
src/groupmod.c

index 7c64359111e5e9430ca0ba4035ea4ee2d8ac6a11..ed40e03ad80c9885fa84568adcda681b9f2e11f8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
        in smaller messages.
        * NEWS, src/usermod.c, man/usermod.8.xml: Likewise
        * NEWS, src/groupadd.c, man/groupadd.8.xml: Add --root option. Open
-       audit after the potential chroot.
+       audit and syslog after the potential chroot.
        * src/groupadd.c: Check atexit failures.
        * src/groupadd.c: Return E_SUCCESS instead of exit'ing at the end
        of main().
+       * NEWS, src/groupadd.c, man/groupadd.8.xml: Add --root option. Open
+       audit and syslog after the potential chroot.
+       * src/groupmod.c: The index of long options is not used.
 
 2011-10-22  Nicolas François  <nicolas.francois@centraliens.net>
 
diff --git a/NEWS b/NEWS
index 43e3e933f8fec097348d012af474c2891f1ec31e..413664d205ea23af96a36707b5597a64c9dced86 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -38,6 +38,7 @@ shadow-4.1.4.3 -> shadow-4.1.5                                        UNRELEASED
   * When the gshadow file exists but there are no gshadow entries, an entry
     is created if the password is changed and group requires a
     shadow entry.
+  * Add --root option.
 - grpck
   * NIS entries were dropped by -s (sort).
 -login
index d306b9d5358c07424613ad9ae1b6f2dedf831ac1..acd28e371686155dee350c24f8af2959711e9e5a 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!--
    Copyright (c) 1991       , Julianne Frances Haugh
-   Copyright (c) 2007 - 2009, Nicolas François
+   Copyright (c) 2007 - 2011, Nicolas François
    All rights reserved.
   
    Redistribution and use in source and binary forms, with or without
          </para>
        </listitem>
       </varlistentry>
+      <varlistentry>
+       <term>
+         <option>-R</option>, <option>--root</option>
+         <replaceable>CHROOT_DIR</replaceable>
+       </term>
+       <listitem>
+         <para>
+           Apply changes in the <replaceable>CHROOT_DIR</replaceable>
+           directory and use the configuration files from the
+           <replaceable>CHROOT_DIR</replaceable> directory.
+         </para>
+       </listitem>
+      </varlistentry>
     </variablelist>
   </refsect1>
 
index e42abdc84c6475d57f45f810af7f51bd12834c8f..eb1c4e16bb4e7c217d9445307a527185bf9a657b 100644 (file)
@@ -2,7 +2,7 @@
  * Copyright (c) 1991 - 1993, Julianne Frances Haugh
  * Copyright (c) 1996 - 2000, Marek Michałkiewicz
  * Copyright (c) 2000 - 2006, Tomasz Kłoczko
- * Copyright (c) 2007 - 2009, Nicolas François
+ * Copyright (c) 2007 - 2011, Nicolas François
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -88,7 +88,7 @@ static bool is_shadow_grp;
 #endif
 
 /* local function prototypes */
-static void usage (int status);
+static /*@noreturn@*/void usage (int status);
 static void new_grent (struct group *grent);
 
 #ifdef SHADOWGRP
@@ -105,7 +105,7 @@ static void check_perms (void);
 /*
  * usage - display usage message and exit
  */
-static void usage (int status)
+static /*@noreturn@*/void usage (int status)
 {
        FILE *usageout = (E_SUCCESS != status) ? stderr : stdout;
        (void) fprintf (usageout,
@@ -414,7 +414,7 @@ static void process_flags (int argc, char **argv)
                        break;
                case 'h':
                        usage (E_SUCCESS);
-                       break;
+                       /*@notreached@*/break;
                case 'K':
                        /*
                         * override login.defs defaults (-K name=value)
index 029102beb0bb77e41297afb1b81dec1b1555a15a..5b139df5f0a629437404efb8a99c307ae72178a9 100644 (file)
@@ -127,6 +127,7 @@ static void usage (int status)
        (void) fputs (_("  -o, --non-unique              allow to use a duplicate (non-unique) GID\n"), usageout);
        (void) fputs (_("  -p, --password PASSWORD       change the password to this (encrypted)\n"
                        "                                PASSWORD\n"), usageout);
+       (void) fputs (_("  -R, --root CHROOT_DIR         directory to chroot into\n"), usageout);
        (void) fputs ("\n", usageout);
        exit (status);
 }
@@ -367,7 +368,6 @@ static void check_new_name (void)
  */
 static void process_flags (int argc, char **argv)
 {
-       int option_index = 0;
        int c;
        static struct option long_options[] = {
                {"gid", required_argument, NULL, 'g'},
@@ -375,11 +375,11 @@ static void process_flags (int argc, char **argv)
                {"new-name", required_argument, NULL, 'n'},
                {"non-unique", no_argument, NULL, 'o'},
                {"password", required_argument, NULL, 'p'},
+               {"root", required_argument, NULL, 'R'},
                {NULL, 0, NULL, '\0'}
        };
-       while ((c =
-               getopt_long (argc, argv, "g:hn:op:",
-                            long_options, &option_index)) != -1) {
+       while ((c = getopt_long (argc, argv, "g:hn:op:R:",
+                                long_options, NULL)) != -1) {
                switch (c) {
                case 'g':
                        gflg = true;
@@ -405,6 +405,8 @@ static void process_flags (int argc, char **argv)
                        group_passwd = optarg;
                        pflg = true;
                        break;
+               case 'R': /* no-op, handled in process_root_flag () */
+                       break;
                default:
                        usage (E_USAGE);
                }
@@ -734,10 +736,6 @@ int main (int argc, char **argv)
 #endif                         /* USE_PAM */
 #endif                         /* ACCT_TOOLS_SETUID */
 
-#ifdef WITH_AUDIT
-       audit_help_open ();
-#endif
-
        /*
         * Get my name so that I can use it to report errors.
         */
@@ -747,6 +745,13 @@ int main (int argc, char **argv)
        (void) bindtextdomain (PACKAGE, LOCALEDIR);
        (void) textdomain (PACKAGE);
 
+       process_root_flag ("-R", argc, argv);
+
+       OPENLOG ("groupmod");
+#ifdef WITH_AUDIT
+       audit_help_open ();
+#endif
+
        if (atexit (do_cleanups) != 0) {
                fprintf (stderr,
                         _("%s: Cannot setup cleanup service.\n"),
@@ -756,8 +761,6 @@ int main (int argc, char **argv)
 
        process_flags (argc, argv);
 
-       OPENLOG ("groupmod");
-
 #ifdef ACCT_TOOLS_SETUID
 #ifdef USE_PAM
        {