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