mirror of
https://git.yoctoproject.org/poky
synced 2026-05-31 12:49:46 +00:00
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) (From OE-Core rev: 5f75aaf0489f40bd35cdd27322e4d1189e30a9e4) Signed-off-by: Colin McAllister <colinmca242@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> Signed-off-by: Steve Sakoman <steve@sakoman.com>
This commit is contained in:
committed by
Steve Sakoman
parent
c7094c4a28
commit
d29097d143
@@ -0,0 +1,66 @@
|
|||||||
|
From 199606e960942c29fd8085be812edd3d3697825c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Colin McAllister <colinmca242@gmail.com>
|
||||||
|
Date: Wed, 17 Jul 2024 07:58:52 -0500
|
||||||
|
Subject: [PATCH 1/1] cut: Fix "-s" flag to omit blank lines
|
||||||
|
|
||||||
|
Using cut with the delimiter flag ("-d") with the "-s" flag to only
|
||||||
|
output lines containing the delimiter will print blank lines. This is
|
||||||
|
deviant behavior from cut provided by GNU Coreutils. Blank lines should
|
||||||
|
be omitted if "-s" is used with "-d".
|
||||||
|
|
||||||
|
This change introduces a somewhat naiive, yet efficient solution, where
|
||||||
|
line length is checked before looping though bytes. If line length is
|
||||||
|
zero and the "-s" flag is used, the code will jump to parsing the next
|
||||||
|
line to avoid printing a newline character.
|
||||||
|
|
||||||
|
In addition, a test to cut.tests has been added to ensure that this
|
||||||
|
regression is fixed and will not happen again in the future.
|
||||||
|
|
||||||
|
Upstream-Status: Submitted [http://lists.busybox.net/pipermail/busybox/2024-July/090834.html]
|
||||||
|
|
||||||
|
Signed-off-by: Colin McAllister <colinmca242@gmail.com>
|
||||||
|
---
|
||||||
|
coreutils/cut.c | 6 ++++++
|
||||||
|
testsuite/cut.tests | 9 +++++++++
|
||||||
|
2 files changed, 15 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/coreutils/cut.c b/coreutils/cut.c
|
||||||
|
index 55bdd9386..b7f986f26 100644
|
||||||
|
--- a/coreutils/cut.c
|
||||||
|
+++ b/coreutils/cut.c
|
||||||
|
@@ -152,6 +152,12 @@ static void cut_file(FILE *file, const char *delim, const char *odelim,
|
||||||
|
unsigned uu = 0, start = 0, end = 0, out = 0;
|
||||||
|
int dcount = 0;
|
||||||
|
|
||||||
|
+ /* Blank line? */
|
||||||
|
+ if (!linelen) {
|
||||||
|
+ if (option_mask32 & CUT_OPT_SUPPRESS_FLGS)
|
||||||
|
+ goto next_line;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
/* Loop through bytes, finding next delimiter */
|
||||||
|
for (;;) {
|
||||||
|
/* End of current range? */
|
||||||
|
diff --git a/testsuite/cut.tests b/testsuite/cut.tests
|
||||||
|
index 2458c019c..0b401bc00 100755
|
||||||
|
--- a/testsuite/cut.tests
|
||||||
|
+++ b/testsuite/cut.tests
|
||||||
|
@@ -65,6 +65,15 @@ testing "cut with -d -f( ) -s" "cut -d' ' -f3 -s input && echo yes" "yes\n" "$in
|
||||||
|
testing "cut with -d -f(a) -s" "cut -da -f3 -s input" "n\nsium:Jim\n\ncion:Ed\n" "$input" ""
|
||||||
|
testing "cut with -d -f(a) -s -n" "cut -da -f3 -s -n input" "n\nsium:Jim\n\ncion:Ed\n" "$input" ""
|
||||||
|
|
||||||
|
+input="\
|
||||||
|
+
|
||||||
|
+foo bar baz
|
||||||
|
+
|
||||||
|
+bing bong boop
|
||||||
|
+
|
||||||
|
+"
|
||||||
|
+testing "cut with -d -s omits blank lines" "cut -d' ' -f2 -s input" "bar\nbong\n" "$input" ""
|
||||||
|
+
|
||||||
|
# substitute for awk
|
||||||
|
optional FEATURE_CUT_REGEX
|
||||||
|
testing "cut -DF" "cut -DF 2,7,5" \
|
||||||
|
--
|
||||||
|
2.43.0
|
||||||
|
|
||||||
@@ -56,6 +56,7 @@ SRC_URI = "https://busybox.net/downloads/busybox-${PV}.tar.bz2;name=tarball \
|
|||||||
file://0001-awk-fix-precedence-of-relative-to.patch \
|
file://0001-awk-fix-precedence-of-relative-to.patch \
|
||||||
file://0002-awk-fix-ternary-operator-and-precedence-of.patch \
|
file://0002-awk-fix-ternary-operator-and-precedence-of.patch \
|
||||||
file://0001-awk.c-fix-CVE-2023-42366-bug-15874.patch \
|
file://0001-awk.c-fix-CVE-2023-42366-bug-15874.patch \
|
||||||
|
file://0001-cut-Fix-s-flag-to-omit-blank-lines.patch \
|
||||||
"
|
"
|
||||||
SRC_URI:append:libc-musl = " file://musl.cfg "
|
SRC_URI:append:libc-musl = " file://musl.cfg "
|
||||||
# TODO http://lists.busybox.net/pipermail/busybox/2023-January/090078.html
|
# TODO http://lists.busybox.net/pipermail/busybox/2023-January/090078.html
|
||||||
|
|||||||
Reference in New Issue
Block a user