Patch from David Meggy to make the swap default to the new version if no
[oweals/busybox.git] / miscutils / crontab.c
index 6c4da95fea9e62fc78574284a565da466e2c8002..52d08dda3a5de5fca494f4be3003137d76a8b302 100644 (file)
@@ -333,18 +333,6 @@ EditFile(const char *user, const char *file)
     wait4(pid, NULL, 0, NULL);
 }
 
-static void
-log(const char *ctl, ...)
-{
-    va_list va;
-    char buf[1024];
-
-    va_start(va, ctl);
-    vsnprintf(buf, sizeof(buf), ctl, va);
-    syslog(LOG_NOTICE, "%s",buf );
-    va_end(va);
-}
-
 static int
 ChangeUser(const char *user, short dochdir)
 {
@@ -355,7 +343,7 @@ ChangeUser(const char *user, short dochdir)
      */
 
     if ((pas = getpwnam(user)) == 0) {
-       log("failed to get uid for %s", user);
+       bb_perror_msg_and_die("failed to get uid for %s", user);
        return(-1);
     }
     setenv("USER", pas->pw_name, 1);
@@ -365,24 +353,13 @@ ChangeUser(const char *user, short dochdir)
     /*
      * Change running state to the user in question
      */
+    change_identity(pas);
 
-    if (initgroups(user, pas->pw_gid) < 0) {
-       log("initgroups failed: %s %m", user);
-       return(-1);
-    }
-    if (setregid(pas->pw_gid, pas->pw_gid) < 0) {
-       log("setregid failed: %s %d", user, pas->pw_gid);
-       return(-1);
-    }
-    if (setreuid(pas->pw_uid, pas->pw_uid) < 0) {
-       log("setreuid failed: %s %d", user, pas->pw_uid);
-       return(-1);
-    }
     if (dochdir) {
        if (chdir(pas->pw_dir) < 0) {
+           bb_perror_msg_and_die("chdir failed: %s %s", user, pas->pw_dir);
            if (chdir(TMPDIR) < 0) {
-               log("chdir failed: %s %s", user, pas->pw_dir);
-               log("chdir failed: %s " TMPDIR, user);
+               bb_perror_msg_and_die("chdir failed: %s %s", user, TMPDIR);
                return(-1);
            }
        }