| 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 |
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 > >
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
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 --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