diff -crB upstart-1.3/init/job_process.c upstart-1.3/init/job_process.c *** upstart-1.3/init/job_process.c 2011-06-14 12:55:09.000000000 +0400 --- upstart-1.3/init/job_process.c 2011-07-19 15:23:32.000000000 +0400 *************** *** 640,654 **** nih_assert (pw->pw_uid == uid); - if (uid && setuid (uid) < 0) { - nih_error_raise_system (); - job_process_error_abort (fds[1], JOB_PROCESS_ERROR_SETUID, 0); - } - if (pw->pw_gid && setgid (pw->pw_gid) < 0) { nih_error_raise_system (); job_process_error_abort (fds[1], JOB_PROCESS_ERROR_SETGID, 0); } } --- 640,654 ---- nih_assert (pw->pw_uid == uid); if (pw->pw_gid && setgid (pw->pw_gid) < 0) { nih_error_raise_system (); job_process_error_abort (fds[1], JOB_PROCESS_ERROR_SETGID, 0); } + + if (uid && setuid (uid) < 0) { + nih_error_raise_system (); + job_process_error_abort (fds[1], JOB_PROCESS_ERROR_SETUID, 0); + } }