From mboxrd@z Thu Jan 1 00:00:00 1970 From: dgoulet@efficios.com (David Goulet) Date: Tue, 27 Aug 2013 17:43:10 -0400 Subject: [lttng-dev] [PATCH lttng-tools] Fix: run_as gid/uid test should return result to parent In-Reply-To: <20130827202455.GA12616@Krystal> References: <20130827202455.GA12616@Krystal> Message-ID: <521D1D6E.7010405@efficios.com> Merged! David Mathieu Desnoyers: > Failure to do so could cause the parent to hang on read() waiting for > the return value from the child. > > Targets: 2.3-rc and stable-2.2 branches. > > Signed-off-by: Mathieu Desnoyers > --- > diff --git a/src/common/runas.c b/src/common/runas.c > index bd51cd4..6979ad3 100644 > --- a/src/common/runas.c > +++ b/src/common/runas.c > @@ -130,14 +130,16 @@ int child_run_as(void *_data) > ret = setegid(data->gid); > if (ret < 0) { > PERROR("setegid"); > - return EXIT_FAILURE; > + sendret.i = -1; > + goto write_return; > } > } > if (data->uid != geteuid()) { > ret = seteuid(data->uid); > if (ret < 0) { > PERROR("seteuid"); > - return EXIT_FAILURE; > + sendret.i = -1; > + goto write_return; > } > } > /* > @@ -145,6 +147,8 @@ int child_run_as(void *_data) > */ > umask(0); > sendret.i = (*data->cmd)(data->data); > + > +write_return: > /* send back return value */ > writeleft = sizeof(sendret); > index = 0; >