diff options
| author | Eilís 'pidge' Ní Fhlannagáin <pidge@baylibre.com> | 2024-10-23 13:15:41 +0200 |
|---|---|---|
| committer | Steve Sakoman <steve@sakoman.com> | 2024-11-02 06:32:36 -0700 |
| commit | 3ee23c255f598120f493220a8f5bd83d68a0efb5 (patch) | |
| tree | 0ddc4f65d7f6c2cf44e45f5536071d4a5861600f /scripts | |
| parent | 0186d190a1cf6aa473b4398de65bc58a22a3cb00 (diff) | |
| download | poky-3ee23c255f598120f493220a8f5bd83d68a0efb5.tar.gz | |
nativesdk-intercept: Fix bad intercept chgrp/chown logic
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)
(From OE-Core rev: ed009b5d58914582c0770222115fc5c5a16bf16d)
Signed-off-by: Eilís 'pidge' Ní Fhlannagáin <pidge@baylibre.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Signed-off-by: Steve Sakoman <steve@sakoman.com>
Diffstat (limited to 'scripts')
| -rwxr-xr-x | scripts/nativesdk-intercept/chgrp | 5 | ||||
| -rwxr-xr-x | 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) | |||
| 14 | args = list() | 14 | args = list() |
| 15 | 15 | ||
| 16 | found = False | 16 | found = False |
| 17 | for i in sys.argv: | 17 | |
| 18 | args.append(real_chgrp) | ||
| 19 | |||
| 20 | for i in sys.argv[1:]: | ||
| 18 | if i.startswith("-"): | 21 | if i.startswith("-"): |
| 19 | args.append(i) | 22 | args.append(i) |
| 20 | continue | 23 | 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) | |||
| 14 | args = list() | 14 | args = list() |
| 15 | 15 | ||
| 16 | found = False | 16 | found = False |
| 17 | for i in sys.argv: | 17 | |
| 18 | args.append(real_chown) | ||
| 19 | |||
| 20 | for i in sys.argv[1:]: | ||
| 18 | if i.startswith("-"): | 21 | if i.startswith("-"): |
| 19 | args.append(i) | 22 | args.append(i) |
| 20 | continue | 23 | continue |
