[PATCH 02/18] bootchartd: convert execl calls to BB_EXECVP

Roberto A. Foglietta roberto.foglietta at gmail.com
Wed Jan 22 09:56:31 UTC 2025


Hi,

On Wed, 22 Jan 2025 at 09:40, Csókás Bence <csokas.bence at prolan.hu> wrote:
>
> Hi,
>
> On 2025. 01. 20. 0:10, Nadav Tasher wrote:
> > Signed-off-by: Nadav Tasher <tashernadav at gmail.com>
> > ---
> >   init/bootchartd.c | 19 +++++++++++++++----
> >   1 file changed, 15 insertions(+), 4 deletions(-)
> >
> > diff --git a/init/bootchartd.c b/init/bootchartd.c
> > index 0929890a3..0833e0fe4 100644
> > --- a/init/bootchartd.c
> > +++ b/init/bootchartd.c
> > @@ -355,6 +355,7 @@ int bootchartd_main(int argc UNUSED_PARAM, char **argv)
> >               CMD_INIT,
> >               CMD_PID1, /* used to mark pid 1 case */
> >       };
> > +     char* exec_argv[2];
> >
> >       INIT_G();
> >
> > @@ -446,10 +447,20 @@ int bootchartd_main(int argc UNUSED_PARAM, char **argv)
> >
> >       if (cmd == CMD_PID1) {
> >               char *bootchart_init = getenv("bootchart_init");
> > -             if (bootchart_init)
> > -                     execl(bootchart_init, bootchart_init, NULL);
> > -             execl("/init", "init", NULL);
> > -             execl("/sbin/init", "init", NULL);
> > +
> > +             /* make second arg always NULL */
> > +             exec_argv[1] = NULL;
> > +
> > +             if (bootchart_init) {
> > +                     exec_argv[0] = bootchart_init;
> > +                     BB_EXECVP(bootchart_init, exec_argv);
> > +             }
> > +
> > +             /* fallback, we are calling different init binaries */
> > +             exec_argv[0] = (char *) "init";
>
> Why are you casting to (char *) ?
>
> > +             BB_EXECVP("/init", exec_argv);
> > +             BB_EXECVP("/sbin/init", exec_argv);
> >               bb_perror_msg_and_die("can't execute '%s'", "/sbin/init");

 bb_perror_msg_and_die("can't execute '/sbin/init'");

> >       }
> >
>
> Bence
>

R-


More information about the busybox mailing list