From e0546adcaa06af8eec8b3f76d91f72f8fd674ee8 Mon Sep 17 00:00:00 2001 From: David Herrmann Date: Sun, 25 Mar 2012 18:16:05 +0200 Subject: [PATCH] pty: correctly terminate when child_setup fails We currently return "ret" when child setup fails, however, we should rather call exit(). Also avoid cleaning up as this is impossible here anyway. Signed-off-by: David Herrmann --- src/pty.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/pty.c b/src/pty.c index 0e58c01..c2c01fc 100644 --- a/src/pty.c +++ b/src/pty.c @@ -120,10 +120,10 @@ exec_child(int pty_master) log_err("failed to exec child: %m"); - _exit(EXIT_FAILURE); + exit(EXIT_FAILURE); } -static int setup_child(int master, struct winsize *ws) +static void setup_child(int master, struct winsize *ws) { int ret; sigset_t sigset; @@ -184,14 +184,14 @@ static int setup_child(int master, struct winsize *ws) close(master); close(slave); - return 0; + return; err_out: ret = -errno; if (slave >= 0) close(slave); close(master); - return ret; + exit(EXIT_FAILURE); } /* @@ -202,7 +202,6 @@ err_out: static int pty_spawn(struct kmscon_pty *pty, int master, unsigned short width, unsigned short height) { - int ret; pid_t pid; struct winsize ws; @@ -217,11 +216,9 @@ static int pty_spawn(struct kmscon_pty *pty, int master, log_err("cannot fork: %m"); return -errno; case 0: - ret = setup_child(master, &ws); - if (ret) - return ret; + setup_child(master, &ws); exec_child(pty->fd); - abort(); + exit(EXIT_FAILURE); default: pty->fd = master; pty->child = pid;