[PATCH] start-stop-daemon: change priority before dropping privileges
Denys Vlasenko
vda.linux at googlemail.com
Sun Jun 9 11:47:41 UTC 2019
applied, thanks!
On Thu, Mar 7, 2019 at 10:23 AM Aitor Esteve Alvarado
<aesteve at singularaircraft.com> wrote:
>
> Currently start-stop-daemon fails when using both the -c option (set
> uid) and -N option (set niceness/priority) as it first drops privileges
> and then tries to increase the priority. This patch changes the order of
> execution.
> ---
> debianutils/start_stop_daemon.c | 18 +++++++++---------
> 1 file changed, 9 insertions(+), 9 deletions(-)
>
> diff --git a/debianutils/start_stop_daemon.c
> b/debianutils/start_stop_daemon.c
> index 3a4c1044a..d15f0c4ca 100644
> --- a/debianutils/start_stop_daemon.c
> +++ b/debianutils/start_stop_daemon.c
> @@ -532,6 +532,15 @@ int start_stop_daemon_main(int argc UNUSED_PARAM,
> char **argv)
> /* User wants _us_ to make the pidfile */
> write_pidfile(pidfile);
> }
> +#if ENABLE_FEATURE_START_STOP_DAEMON_FANCY
> + if (opt & OPT_NICELEVEL) {
> + /* Set process priority */
> + int prio = getpriority(PRIO_PROCESS, 0) + xatoi_range(opt_N,
> INT_MIN/2, INT_MAX/2);
> + if (setpriority(PRIO_PROCESS, 0, prio) < 0) {
> + bb_perror_msg_and_die("setpriority(%d)", prio);
> + }
> + }
> +#endif
> if (opt & OPT_c) {
> struct bb_uidgid_t ugid;
> parse_chown_usergroup_or_die(&ugid, chuid);
> @@ -546,15 +555,6 @@ int start_stop_daemon_main(int argc UNUSED_PARAM,
> char **argv)
> setgroups(1, &ugid.gid);
> }
> }
> -#if ENABLE_FEATURE_START_STOP_DAEMON_FANCY
> - if (opt & OPT_NICELEVEL) {
> - /* Set process priority */
> - int prio = getpriority(PRIO_PROCESS, 0) + xatoi_range(opt_N,
> INT_MIN/2, INT_MAX/2);
> - if (setpriority(PRIO_PROCESS, 0, prio) < 0) {
> - bb_perror_msg_and_die("setpriority(%d)", prio);
> - }
> - }
> -#endif
> /* Try:
> * strace -oLOG start-stop-daemon -S -x /bin/usleep -a qwerty 500000
> * should exec "/bin/usleep", but argv[0] should be "qwerty":
> --
> 2.17.2
> _______________________________________________
> busybox mailing list
> busybox at busybox.net
> http://lists.busybox.net/mailman/listinfo/busybox
More information about the busybox
mailing list