diff options
author | Colin McAllister <colinmca242@gmail.com> | 2024-09-06 10:47:39 -0500 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2024-09-10 13:05:00 +0100 |
commit | e1647491394723a1a9096093bd2bc819189de1ac (patch) | |
tree | cf3a79f9d9b7afa15e83765d959aa0a47f86fe5c /meta/recipes-core | |
parent | 8c820896b8786fada1125f8c945f4469bd5c5611 (diff) | |
download | poky-e1647491394723a1a9096093bd2bc819189de1ac.tar.gz |
busybox: Fix cut with "-s" flag
This fixes and issue that allows blank lines to be incorrectly output
when the "-s" flag is included. This issue propogates into the
populate-volatile.sh script in initscripts. If a volatiles drop file
contains blank lines, a blank line will be included in combined users,
which will incorrectly result in a difference in the number of combined
users versus defined users. If this happens, the volatiles file will not
be executed.
(From OE-Core rev: dfbcf0581ab3dd47037726a7b8aa06f777792473)
Signed-off-by: Colin McAllister <colinmca242@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-core')
-rw-r--r-- | meta/recipes-core/busybox/busybox/0001-cut-Fix-s-flag-to-omit-blank-lines.patch | 66 | ||||
-rw-r--r-- | meta/recipes-core/busybox/busybox_1.36.1.bb | 1 |
2 files changed, 67 insertions, 0 deletions
diff --git a/meta/recipes-core/busybox/busybox/0001-cut-Fix-s-flag-to-omit-blank-lines.patch b/meta/recipes-core/busybox/busybox/0001-cut-Fix-s-flag-to-omit-blank-lines.patch new file mode 100644 index 0000000000..a0a8607b23 --- /dev/null +++ b/meta/recipes-core/busybox/busybox/0001-cut-Fix-s-flag-to-omit-blank-lines.patch | |||
@@ -0,0 +1,66 @@ | |||
1 | From 199606e960942c29fd8085be812edd3d3697825c Mon Sep 17 00:00:00 2001 | ||
2 | From: Colin McAllister <colinmca242@gmail.com> | ||
3 | Date: Wed, 17 Jul 2024 07:58:52 -0500 | ||
4 | Subject: [PATCH 1/1] cut: Fix "-s" flag to omit blank lines | ||
5 | |||
6 | Using cut with the delimiter flag ("-d") with the "-s" flag to only | ||
7 | output lines containing the delimiter will print blank lines. This is | ||
8 | deviant behavior from cut provided by GNU Coreutils. Blank lines should | ||
9 | be omitted if "-s" is used with "-d". | ||
10 | |||
11 | This change introduces a somewhat naiive, yet efficient solution, where | ||
12 | line length is checked before looping though bytes. If line length is | ||
13 | zero and the "-s" flag is used, the code will jump to parsing the next | ||
14 | line to avoid printing a newline character. | ||
15 | |||
16 | In addition, a test to cut.tests has been added to ensure that this | ||
17 | regression is fixed and will not happen again in the future. | ||
18 | |||
19 | Upstream-Status: Submitted [http://lists.busybox.net/pipermail/busybox/2024-July/090834.html] | ||
20 | |||
21 | Signed-off-by: Colin McAllister <colinmca242@gmail.com> | ||
22 | --- | ||
23 | coreutils/cut.c | 6 ++++++ | ||
24 | testsuite/cut.tests | 9 +++++++++ | ||
25 | 2 files changed, 15 insertions(+) | ||
26 | |||
27 | diff --git a/coreutils/cut.c b/coreutils/cut.c | ||
28 | index 55bdd9386..b7f986f26 100644 | ||
29 | --- a/coreutils/cut.c | ||
30 | +++ b/coreutils/cut.c | ||
31 | @@ -152,6 +152,12 @@ static void cut_file(FILE *file, const char *delim, const char *odelim, | ||
32 | unsigned uu = 0, start = 0, end = 0, out = 0; | ||
33 | int dcount = 0; | ||
34 | |||
35 | + /* Blank line? */ | ||
36 | + if (!linelen) { | ||
37 | + if (option_mask32 & CUT_OPT_SUPPRESS_FLGS) | ||
38 | + goto next_line; | ||
39 | + } | ||
40 | + | ||
41 | /* Loop through bytes, finding next delimiter */ | ||
42 | for (;;) { | ||
43 | /* End of current range? */ | ||
44 | diff --git a/testsuite/cut.tests b/testsuite/cut.tests | ||
45 | index 2458c019c..0b401bc00 100755 | ||
46 | --- a/testsuite/cut.tests | ||
47 | +++ b/testsuite/cut.tests | ||
48 | @@ -65,6 +65,15 @@ testing "cut with -d -f( ) -s" "cut -d' ' -f3 -s input && echo yes" "yes\n" "$in | ||
49 | testing "cut with -d -f(a) -s" "cut -da -f3 -s input" "n\nsium:Jim\n\ncion:Ed\n" "$input" "" | ||
50 | testing "cut with -d -f(a) -s -n" "cut -da -f3 -s -n input" "n\nsium:Jim\n\ncion:Ed\n" "$input" "" | ||
51 | |||
52 | +input="\ | ||
53 | + | ||
54 | +foo bar baz | ||
55 | + | ||
56 | +bing bong boop | ||
57 | + | ||
58 | +" | ||
59 | +testing "cut with -d -s omits blank lines" "cut -d' ' -f2 -s input" "bar\nbong\n" "$input" "" | ||
60 | + | ||
61 | # substitute for awk | ||
62 | optional FEATURE_CUT_REGEX | ||
63 | testing "cut -DF" "cut -DF 2,7,5" \ | ||
64 | -- | ||
65 | 2.43.0 | ||
66 | |||
diff --git a/meta/recipes-core/busybox/busybox_1.36.1.bb b/meta/recipes-core/busybox/busybox_1.36.1.bb index 980a96b88a..f7c3eff29e 100644 --- a/meta/recipes-core/busybox/busybox_1.36.1.bb +++ b/meta/recipes-core/busybox/busybox_1.36.1.bb | |||
@@ -56,6 +56,7 @@ SRC_URI = "https://busybox.net/downloads/busybox-${PV}.tar.bz2;name=tarball \ | |||
56 | file://0001-awk-fix-precedence-of-relative-to.patch \ | 56 | file://0001-awk-fix-precedence-of-relative-to.patch \ |
57 | file://0002-awk-fix-ternary-operator-and-precedence-of.patch \ | 57 | file://0002-awk-fix-ternary-operator-and-precedence-of.patch \ |
58 | file://0001-awk.c-fix-CVE-2023-42366-bug-15874.patch \ | 58 | file://0001-awk.c-fix-CVE-2023-42366-bug-15874.patch \ |
59 | file://0001-cut-Fix-s-flag-to-omit-blank-lines.patch \ | ||
59 | " | 60 | " |
60 | SRC_URI:append:libc-musl = " file://musl.cfg " | 61 | SRC_URI:append:libc-musl = " file://musl.cfg " |
61 | # TODO http://lists.busybox.net/pipermail/busybox/2023-January/090078.html | 62 | # TODO http://lists.busybox.net/pipermail/busybox/2023-January/090078.html |