[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