]> granicus.if.org Git - shadow/commitdiff
Improve diagnostic.
authorNicolas François <nicolas.francois@centraliens.net>
Thu, 15 Aug 2013 15:09:38 +0000 (17:09 +0200)
committerNicolas François <nicolas.francois@centraliens.net>
Thu, 15 Aug 2013 15:30:19 +0000 (17:30 +0200)
* src/usermod.c: Check early if /etc/subuid (/etc/subgid) exists
when option -v/-V (-w/-W) are provided.

ChangeLog
src/usermod.c

index acee091bf989a009a9cb901fd838541d81e4e0d8..ecfa950c341213525d13594a681a1ea236280656 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2013-08-15  Nicolas François  <nicolas.francois@centraliens.net>
+
+       * src/usermod.c: Check early if /etc/subuid (/etc/subgid) exists
+       when option -v/-V (-w/-W) are provided. 
+
 2013-08-15  Nicolas François  <nicolas.francois@centraliens.net>
 
        * src/usermod.c: Fix parse of ranges. The hyphen might be followed
index 5f5838dcd458a19a9362b51985e374462708fa14..e7d4351337459b5c37b06675d1a44d8df03be1e6 100644 (file)
@@ -1361,6 +1361,21 @@ static void process_flags (int argc, char **argv)
                exit (E_UID_IN_USE);
        }
 
+       if (   (vflg || Vflg)
+           && !is_sub_uid) {
+               fprintf (stderr,
+                        _("%s: %s does not exist, you cannot use the flags %s or %s\n"),
+                        Prog, sub_uid_dbname (), "-v", "-V");
+               exit (E_USAGE);
+       }
+
+       if (   (wflg || Wflg)
+           && !is_sub_gid) {
+               fprintf (stderr,
+                        _("%s: %s does not exist, you cannot use the flags %s or %s\n"),
+                        Prog, sub_gid_dbname (), "-w", "-W");
+               exit (E_USAGE);
+       }
 }
 
 /*
@@ -1463,12 +1478,12 @@ static void close_files (void)
 
 #ifdef ENABLE_SUBIDS
        if (vflg || Vflg) {
-               if (!is_sub_uid || (sub_uid_close () == 0)) {
+               if (sub_uid_close () == 0) {
                        fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, sub_uid_dbname ());
                        SYSLOG ((LOG_ERR, "failure while writing changes to %s", sub_uid_dbname ()));
                        fail_exit (E_SUB_UID_UPDATE);
                }
-               if (!is_sub_uid || (sub_uid_unlock () == 0)) {
+               if (sub_uid_unlock () == 0) {
                        fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, sub_uid_dbname ());
                        SYSLOG ((LOG_ERR, "failed to unlock %s", sub_uid_dbname ()));
                        /* continue */
@@ -1476,12 +1491,12 @@ static void close_files (void)
                sub_uid_locked = false;
        }
        if (wflg || Wflg) {
-               if (!is_sub_gid || (sub_gid_close () == 0)) {
+               if (sub_gid_close () == 0) {
                        fprintf (stderr, _("%s: failure while writing changes to %s\n"), Prog, sub_gid_dbname ());
                        SYSLOG ((LOG_ERR, "failure while writing changes to %s", sub_gid_dbname ()));
                        fail_exit (E_SUB_GID_UPDATE);
                }
-               if (!is_sub_gid || (sub_gid_unlock () == 0)) {
+               if (sub_gid_unlock () == 0) {
                        fprintf (stderr, _("%s: failed to unlock %s\n"), Prog, sub_gid_dbname ());
                        SYSLOG ((LOG_ERR, "failed to unlock %s", sub_gid_dbname ()));
                        /* continue */
@@ -1571,14 +1586,14 @@ static void open_files (void)
        }
 #ifdef ENABLE_SUBIDS
        if (vflg || Vflg) {
-               if (!is_sub_uid || (sub_uid_lock () == 0)) {
+               if (sub_uid_lock () == 0) {
                        fprintf (stderr,
                                 _("%s: cannot lock %s; try again later.\n"),
                                 Prog, sub_uid_dbname ());
                        fail_exit (E_SUB_UID_UPDATE);
                }
                sub_uid_locked = true;
-               if (!is_sub_uid || (sub_uid_open (O_RDWR) == 0)) {
+               if (sub_uid_open (O_RDWR) == 0) {
                        fprintf (stderr,
                                 _("%s: cannot open %s\n"),
                                 Prog, sub_uid_dbname ());
@@ -1586,14 +1601,14 @@ static void open_files (void)
                }
        }
        if (wflg || Wflg) {
-               if (!is_sub_gid || (sub_gid_lock () == 0)) {
+               if (sub_gid_lock () == 0) {
                        fprintf (stderr,
                                 _("%s: cannot lock %s; try again later.\n"),
                                 Prog, sub_gid_dbname ());
                        fail_exit (E_SUB_GID_UPDATE);
                }
                sub_gid_locked = true;
-               if (!is_sub_gid || (sub_gid_open (O_RDWR) == 0)) {
+               if (sub_gid_open (O_RDWR) == 0) {
                        fprintf (stderr,
                                 _("%s: cannot open %s\n"),
                                 Prog, sub_gid_dbname ());