diff mbox series

[kirkstone] nativesdk-intercept: Fix bad intercept chgrp/chown logic

Message ID 20241023111541.3437331-1-liu.ming50@gmail.com
State Accepted, archived
Commit ed009b5d58914582c0770222115fc5c5a16bf16d
Delegated to: Steve Sakoman
Headers show
Series [kirkstone] nativesdk-intercept: Fix bad intercept chgrp/chown logic | expand

Commit Message

Ming Liu Oct. 23, 2024, 11:15 a.m. UTC
From: Eilís 'pidge' Ní Fhlannagáin <pidge@baylibre.com>

Running either of these ends up corrupting the os.execv args.

If we run:
./scripts/nativesdk-intercept/chown -R foo:foo bar

The loop here ends up missing the conversion of foo:foo to root:root because
it sees sys.argv[0] and assumes that it's the user:group argument and that we
should convert that. We end up a os.execv(path, args) that have the following
args:

['root:root', '-R', 'foo:foo', 'bar']

As os.execv ignores args[0], we can just populate it with sys.argv[0] and then
loop through sys.argv[1:]. As both chgrp and chown would have either flags and
USER[:GROUP] next, this fixes the issue.

(Backported from OE-Core rev: 2a75f647ec7696d353f4b09099d777ba53f34d36)

Signed-off-by: Eilís 'pidge' Ní Fhlannagáin <pidge@baylibre.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
---
 scripts/nativesdk-intercept/chgrp | 5 ++++-
 scripts/nativesdk-intercept/chown | 5 ++++-
 2 files changed, 8 insertions(+), 2 deletions(-)

Comments

Ming Liu Oct. 28, 2024, 8:09 a.m. UTC | #1
Hi, maintainers:

Would you please cherry pick this to kirkstone, otherwise the SDK build on
kirkstone is broken.

//Ming Liu

Ming Liu <liu.ming50@gmail.com> 於 2024年10月23日 週三 下午1:15寫道:

> From: Eilís 'pidge' Ní Fhlannagáin <pidge@baylibre.com>
>
> Running either of these ends up corrupting the os.execv args.
>
> If we run:
> ./scripts/nativesdk-intercept/chown -R foo:foo bar
>
> The loop here ends up missing the conversion of foo:foo to root:root
> because
> it sees sys.argv[0] and assumes that it's the user:group argument and that
> we
> should convert that. We end up a os.execv(path, args) that have the
> following
> args:
>
> ['root:root', '-R', 'foo:foo', 'bar']
>
> As os.execv ignores args[0], we can just populate it with sys.argv[0] and
> then
> loop through sys.argv[1:]. As both chgrp and chown would have either flags
> and
> USER[:GROUP] next, this fixes the issue.
>
> (Backported from OE-Core rev: 2a75f647ec7696d353f4b09099d777ba53f34d36)
>
> Signed-off-by: Eilís 'pidge' Ní Fhlannagáin <pidge@baylibre.com>
> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
> ---
>  scripts/nativesdk-intercept/chgrp | 5 ++++-
>  scripts/nativesdk-intercept/chown | 5 ++++-
>  2 files changed, 8 insertions(+), 2 deletions(-)
>
> diff --git a/scripts/nativesdk-intercept/chgrp
> b/scripts/nativesdk-intercept/chgrp
> index 30cc417d3a..f8ae84b8b3 100755
> --- a/scripts/nativesdk-intercept/chgrp
> +++ b/scripts/nativesdk-intercept/chgrp
> @@ -14,7 +14,10 @@ real_chgrp = shutil.which('chgrp', path=path)
>  args = list()
>
>  found = False
> -for i in sys.argv:
> +
> +args.append(real_chgrp)
> +
> +for i in sys.argv[1:]:
>      if i.startswith("-"):
>          args.append(i)
>          continue
> diff --git a/scripts/nativesdk-intercept/chown
> b/scripts/nativesdk-intercept/chown
> index 3914b3e384..0805ceb70a 100755
> --- a/scripts/nativesdk-intercept/chown
> +++ b/scripts/nativesdk-intercept/chown
> @@ -14,7 +14,10 @@ real_chown = shutil.which('chown', path=path)
>  args = list()
>
>  found = False
> -for i in sys.argv:
> +
> +args.append(real_chown)
> +
> +for i in sys.argv[1:]:
>      if i.startswith("-"):
>          args.append(i)
>          continue
> --
> 2.43.0
>
>
Richard Purdie Oct. 28, 2024, 9:44 a.m. UTC | #2
On Mon, 2024-10-28 at 09:09 +0100, Ming Liu wrote:
> Hi, maintainers:
> 
> Would you please cherry pick this to kirkstone, otherwise the SDK
> build on kirkstone is broken.

Firstly, you need to copy the maintainer for kirkstone. I've added him
to the address list.

Secondly, the patch is also already in his test queue:

https://git.yoctoproject.org/poky-contrib/commit/?h=stable/kirkstone-nut&id=145886736d92a55df1e822aa75044028627587ec

Thirdly, you gave us two business days to handle this before following
up :/.

Cheers,

Richard


> Ming Liu <liu.ming50@gmail.com> 於 2024年10月23日 週三 下午1:15寫道:
> > From: Eilís 'pidge' Ní Fhlannagáin <pidge@baylibre.com>
> > 
> > Running either of these ends up corrupting the os.execv args.
> > 
> > If we run:
> > ./scripts/nativesdk-intercept/chown -R foo:foo bar
> > 
> > The loop here ends up missing the conversion of foo:foo to
> > root:root because
> > it sees sys.argv[0] and assumes that it's the user:group argument
> > and that we
> > should convert that. We end up a os.execv(path, args) that have the
> > following
> > args:
> > 
> > ['root:root', '-R', 'foo:foo', 'bar']
> > 
> > As os.execv ignores args[0], we can just populate it with
> > sys.argv[0] and then
> > loop through sys.argv[1:]. As both chgrp and chown would have
> > either flags and
> > USER[:GROUP] next, this fixes the issue.
> > 
> > (Backported from OE-Core rev:
> > 2a75f647ec7696d353f4b09099d777ba53f34d36)
> > 
> > Signed-off-by: Eilís 'pidge' Ní Fhlannagáin <pidge@baylibre.com>
> > Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
> > ---
> >  scripts/nativesdk-intercept/chgrp | 5 ++++-
> >  scripts/nativesdk-intercept/chown | 5 ++++-
> >  2 files changed, 8 insertions(+), 2 deletions(-)
> > 
> > diff --git a/scripts/nativesdk-intercept/chgrp b/scripts/nativesdk-
> > intercept/chgrp
> > index 30cc417d3a..f8ae84b8b3 100755
> > --- a/scripts/nativesdk-intercept/chgrp
> > +++ b/scripts/nativesdk-intercept/chgrp
> > @@ -14,7 +14,10 @@ real_chgrp = shutil.which('chgrp', path=path)
> >  args = list()
> > 
> >  found = False
> > -for i in sys.argv:
> > +
> > +args.append(real_chgrp)
> > +
> > +for i in sys.argv[1:]:
> >      if i.startswith("-"):
> >          args.append(i)
> >          continue
> > diff --git a/scripts/nativesdk-intercept/chown b/scripts/nativesdk-
> > intercept/chown
> > index 3914b3e384..0805ceb70a 100755
> > --- a/scripts/nativesdk-intercept/chown
> > +++ b/scripts/nativesdk-intercept/chown
> > @@ -14,7 +14,10 @@ real_chown = shutil.which('chown', path=path)
> >  args = list()
> > 
> >  found = False
> > -for i in sys.argv:
> > +
> > +args.append(real_chown)
> > +
> > +for i in sys.argv[1:]:
> >      if i.startswith("-"):
> >          args.append(i)
> >          continue
Ming Liu Oct. 28, 2024, 10:05 a.m. UTC | #3
Hi, Richard:

Thanks for the info, will add maintainer of the LTS branches to the mail
list next time.

the best,
thank you

Richard Purdie <richard.purdie@linuxfoundation.org> 於 2024年10月28日 週一
上午10:44寫道:

> On Mon, 2024-10-28 at 09:09 +0100, Ming Liu wrote:
> > Hi, maintainers:
> >
> > Would you please cherry pick this to kirkstone, otherwise the SDK
> > build on kirkstone is broken.
>
> Firstly, you need to copy the maintainer for kirkstone. I've added him
> to the address list.
>
> Secondly, the patch is also already in his test queue:
>
>
> https://git.yoctoproject.org/poky-contrib/commit/?h=stable/kirkstone-nut&id=145886736d92a55df1e822aa75044028627587ec
>
> Thirdly, you gave us two business days to handle this before following
> up :/.
>
> Cheers,
>
> Richard
>
>
> > Ming Liu <liu.ming50@gmail.com> 於 2024年10月23日 週三 下午1:15寫道:
> > > From: Eilís 'pidge' Ní Fhlannagáin <pidge@baylibre.com>
> > >
> > > Running either of these ends up corrupting the os.execv args.
> > >
> > > If we run:
> > > ./scripts/nativesdk-intercept/chown -R foo:foo bar
> > >
> > > The loop here ends up missing the conversion of foo:foo to
> > > root:root because
> > > it sees sys.argv[0] and assumes that it's the user:group argument
> > > and that we
> > > should convert that. We end up a os.execv(path, args) that have the
> > > following
> > > args:
> > >
> > > ['root:root', '-R', 'foo:foo', 'bar']
> > >
> > > As os.execv ignores args[0], we can just populate it with
> > > sys.argv[0] and then
> > > loop through sys.argv[1:]. As both chgrp and chown would have
> > > either flags and
> > > USER[:GROUP] next, this fixes the issue.
> > >
> > > (Backported from OE-Core rev:
> > > 2a75f647ec7696d353f4b09099d777ba53f34d36)
> > >
> > > Signed-off-by: Eilís 'pidge' Ní Fhlannagáin <pidge@baylibre.com>
> > > Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
> > > ---
> > >  scripts/nativesdk-intercept/chgrp | 5 ++++-
> > >  scripts/nativesdk-intercept/chown | 5 ++++-
> > >  2 files changed, 8 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/scripts/nativesdk-intercept/chgrp b/scripts/nativesdk-
> > > intercept/chgrp
> > > index 30cc417d3a..f8ae84b8b3 100755
> > > --- a/scripts/nativesdk-intercept/chgrp
> > > +++ b/scripts/nativesdk-intercept/chgrp
> > > @@ -14,7 +14,10 @@ real_chgrp = shutil.which('chgrp', path=path)
> > >  args = list()
> > >
> > >  found = False
> > > -for i in sys.argv:
> > > +
> > > +args.append(real_chgrp)
> > > +
> > > +for i in sys.argv[1:]:
> > >      if i.startswith("-"):
> > >          args.append(i)
> > >          continue
> > > diff --git a/scripts/nativesdk-intercept/chown b/scripts/nativesdk-
> > > intercept/chown
> > > index 3914b3e384..0805ceb70a 100755
> > > --- a/scripts/nativesdk-intercept/chown
> > > +++ b/scripts/nativesdk-intercept/chown
> > > @@ -14,7 +14,10 @@ real_chown = shutil.which('chown', path=path)
> > >  args = list()
> > >
> > >  found = False
> > > -for i in sys.argv:
> > > +
> > > +args.append(real_chown)
> > > +
> > > +for i in sys.argv[1:]:
> > >      if i.startswith("-"):
> > >          args.append(i)
> > >          continue
>
>
diff mbox series

Patch

diff --git a/scripts/nativesdk-intercept/chgrp b/scripts/nativesdk-intercept/chgrp
index 30cc417d3a..f8ae84b8b3 100755
--- a/scripts/nativesdk-intercept/chgrp
+++ b/scripts/nativesdk-intercept/chgrp
@@ -14,7 +14,10 @@  real_chgrp = shutil.which('chgrp', path=path)
 args = list()
 
 found = False
-for i in sys.argv:
+
+args.append(real_chgrp)
+
+for i in sys.argv[1:]:
     if i.startswith("-"):
         args.append(i)
         continue
diff --git a/scripts/nativesdk-intercept/chown b/scripts/nativesdk-intercept/chown
index 3914b3e384..0805ceb70a 100755
--- a/scripts/nativesdk-intercept/chown
+++ b/scripts/nativesdk-intercept/chown
@@ -14,7 +14,10 @@  real_chown = shutil.which('chown', path=path)
 args = list()
 
 found = False
-for i in sys.argv:
+
+args.append(real_chown)
+
+for i in sys.argv[1:]:
     if i.startswith("-"):
         args.append(i)
         continue