]> granicus.if.org Git - shadow/commitdiff
* src/useradd.c: Keep the default file as much as possible to
authornekral-guest <nekral-guest@5a98b0ae-9ef6-0310-add3-de5d479b70d7>
Fri, 18 May 2012 20:28:16 +0000 (20:28 +0000)
committernekral-guest <nekral-guest@5a98b0ae-9ef6-0310-add3-de5d479b70d7>
Fri, 18 May 2012 20:28:16 +0000 (20:28 +0000)
avoid issue in case of crash. Use link instead of rename.

ChangeLog
src/useradd.c

index 98f1a27fd0b1a6e6b0c4c746c6c12c0d3da8cd2b..fab7ad3ac605cf8e711ef93ed682f6c0c185d012 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2012-05-18  Nicolas François  <nicolas.francois@centraliens.net>
+
+       * src/useradd.c: Keep the default file as much as possible to
+       avoid issue in case of crash. Use link instead of rename.
+
 2012-05-18  Peter Vrabec  <pvrabec@redhat.com>
 
        * lib/commonio.c: Fix labeling of /etc/{passwd,shadow,group,gshadow}.
index f1b2fa81b552622b9d757b7d27d9040158c2b5b9..fcffd1299ff2dc22604eac83922a34597802f8f5 100644 (file)
@@ -557,11 +557,12 @@ static int set_defaults (void)
         */
        wlen = snprintf (buf, sizeof buf, "%s-", USER_DEFAULTS_FILE);
        assert (wlen < (int) sizeof buf);
-       if ((rename (USER_DEFAULTS_FILE, buf) != 0) && (ENOENT != errno)) {
+       unlink (buf);
+       if ((link (USER_DEFAULTS_FILE, buf) != 0) && (ENOENT != errno)) {
                int err = errno;
                fprintf (stderr,
-                        _("%s: rename: %s: %s\n"),
-                        Prog, USER_DEFAULTS_FILE, strerror (err));
+                        _("%s: Cannot create backup file (%s): %s\n"),
+                        Prog, buf, strerror (err));
                unlink (new_file);
                return -1;
        }