revert last two commits. vfork cannot be used in subroutine,
it trashes stack on return
This commit is contained in:
@@ -38,8 +38,10 @@ static void change_user(const struct passwd *pas)
|
||||
static void edit_file(const struct passwd *pas, const char *file)
|
||||
{
|
||||
const char *ptr;
|
||||
int pid = xvfork();
|
||||
int pid = vfork();
|
||||
|
||||
if (pid < 0) /* failure */
|
||||
bb_perror_msg_and_die("vfork");
|
||||
if (pid) { /* parent */
|
||||
wait4pid(pid);
|
||||
return;
|
||||
@@ -63,7 +65,9 @@ static int open_as_user(const struct passwd *pas, const char *file)
|
||||
pid_t pid;
|
||||
char c;
|
||||
|
||||
pid = xvfork();
|
||||
pid = vfork();
|
||||
if (pid < 0) /* ERROR */
|
||||
bb_perror_msg_and_die("vfork");
|
||||
if (pid) { /* PARENT */
|
||||
if (wait4pid(pid) == 0) {
|
||||
/* exitcode 0: child says it can read */
|
||||
|
Reference in New Issue
Block a user