From 5977e189d6cfbb091395521ccc6d4c680cc1298b Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Thu, 19 Nov 2020 11:50:25 +0100 Subject: [PATCH] 2.36.1-2: cleanup patches, fix 'symfollow' mount issue --- ...ep-freed-issue-file-pointer-zeroized.patch | 55 ------- column-fix-leading-space-characters-bug.patch | 148 ------------------ ...se-symfollow-for-helpers-on-user-mou.patch | 40 +++++ ...unt-remove-read-mountinfo-workaround.patch | 0 ...create.patch => login-lastlog-create.patch | 0 util-linux.spec | 13 +- 6 files changed, 50 insertions(+), 206 deletions(-) delete mode 100644 0001-agetty-keep-freed-issue-file-pointer-zeroized.patch delete mode 100644 column-fix-leading-space-characters-bug.patch create mode 100644 libmount-don-t-use-symfollow-for-helpers-on-user-mou.patch rename 0002-libmount-remove-read-mountinfo-workaround.patch => libmount-remove-read-mountinfo-workaround.patch (100%) rename 2.36-login-lastlog-create.patch => login-lastlog-create.patch (100%) diff --git a/0001-agetty-keep-freed-issue-file-pointer-zeroized.patch b/0001-agetty-keep-freed-issue-file-pointer-zeroized.patch deleted file mode 100644 index a5441b1..0000000 --- a/0001-agetty-keep-freed-issue-file-pointer-zeroized.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 9418ba6d05feed6061f5343741b1bc56e7bde663 Mon Sep 17 00:00:00 2001 -From: Karel Zak -Date: Fri, 20 Dec 2019 15:05:33 +0100 -Subject: [PATCH] agetty: keep freed issue file pointer zeroized - -References: https://bugzilla.redhat.com/show_bug.cgi?id=1784536 -Signed-off-by: Karel Zak ---- - term-utils/agetty.c | 15 +++++++++++---- - 1 file changed, 11 insertions(+), 4 deletions(-) - -diff --git a/term-utils/agetty.c b/term-utils/agetty.c -index 3c20acc98..dfc4921f5 100644 ---- a/term-utils/agetty.c -+++ b/term-utils/agetty.c -@@ -1820,8 +1820,12 @@ static int issuefile_read_stream( - if (fstat(fileno(f), &st) || !S_ISREG(st.st_mode)) - return 1; - -- if (!ie->output) -- ie->output = open_memstream(&ie->mem, &ie->mem_sz); -+ if (!ie->output) { -+ free(ie->mem); -+ ie->mem_sz = 0; -+ ie->mem = NULL; -+ ie->output = open_memstream(&ie->mem, &ie->mem_sz); -+ } - - while ((c = getc(f)) != EOF) { - if (c == '\\') -@@ -1965,8 +1969,10 @@ done: - if (netlink_groups != 0) - open_netlink(); - #endif -- if (ie->output) -+ if (ie->output) { - fclose(ie->output); -+ ie->output = NULL; -+ } - } - - /* This is --show-issue backend, executed by normal user on the current -@@ -1985,7 +1991,8 @@ static void show_issue(struct options *op) - - if (ie.mem_sz) - write_all(STDOUT_FILENO, ie.mem, ie.mem_sz); -- -+ if (ie.output) -+ fclose(ie.output); - free(ie.mem); - } - --- -2.21.0 - diff --git a/column-fix-leading-space-characters-bug.patch b/column-fix-leading-space-characters-bug.patch deleted file mode 100644 index e612d34..0000000 --- a/column-fix-leading-space-characters-bug.patch +++ /dev/null @@ -1,148 +0,0 @@ -From 651c5d428c2ef103ee8c5b1a310d6f29f0304744 Mon Sep 17 00:00:00 2001 -From: Karel Zak -Date: Tue, 27 Mar 2018 10:40:13 +0200 -Subject: [PATCH] column: fix leading space characters bug - -The bug has been introduced during column(1) rewrite. The function -read_input() need to skip leading space only temporary to detect empty -lines, but the rest of the code has to use the original buffer (line). -I've tried to fix one of the symptoms by 5c7b67fbbf41c973ca8d49b1e8bdba22dbb917aa -(alter), but this solution is unnecessary and too complex. - -Changes: - -* don't ignore leading space -* remove unnecessary stuff introduced by 5c7b67fbbf41c973ca8d49b1e8bdba22dbb917aa -* fix regression test with incorrect separator - -Addresses: https://github.com/karelzak/util-linux/issues/575 -Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=1560283 -Signed-off-by: Karel Zak ---- - tests/expected/column/table-input-separator-space | 2 +- - tests/ts/column/table | 2 +- - text-utils/column.c | 36 ++--------------------- - 4 files changed, 5 insertions(+), 38 deletions(-) - -diff --git a/tests/expected/column/table-input-separator-space b/tests/expected/column/table-input-separator-space -index 8a6513c11..25d9b5ab0 100644 ---- a/tests/expected/column/table-input-separator-space -+++ b/tests/expected/column/table-input-separator-space -@@ -1,5 +1,5 @@ - AAA BBBB C DDDD --BBB CCCC DDD -+ BBB CCCC DDD - AA BB DD - AAAA B CC D - AA CC DD -diff --git a/tests/ts/column/table b/tests/ts/column/table -index 27b52e7c8..5c89d5eaf 100755 ---- a/tests/ts/column/table -+++ b/tests/ts/column/table -@@ -37,7 +37,7 @@ $TS_CMD_COLUMN --separator ',' --table $TS_SELF/files/table-sep >> $TS_OUTPUT 2> - ts_finalize_subtest - - ts_init_subtest "input-separator-space" --$TS_CMD_COLUMN --separator ',' --table $TS_SELF/files/table-sep-space >> $TS_OUTPUT 2>&1 -+$TS_CMD_COLUMN --separator "$(echo -e '\t')" --table $TS_SELF/files/table-sep-space >> $TS_OUTPUT 2>&1 - ts_finalize_subtest - - ts_init_subtest "long" -diff --git a/text-utils/column.c b/text-utils/column.c -index 89d46d280..195814328 100644 ---- a/text-utils/column.c -+++ b/text-utils/column.c -@@ -86,7 +86,6 @@ struct column_control { - const char *tree_parent; - - wchar_t *input_separator; -- char *input_separator_raw; - const char *output_separator; - - wchar_t **ents; /* input entries */ -@@ -96,7 +95,6 @@ struct column_control { - unsigned int greedy :1, - json :1, - header_repeat :1, -- input_sep_space : 1, /* input separator contains space chars */ - tab_noheadings :1; - }; - -@@ -470,19 +468,7 @@ static int read_input(struct column_control *ctl, FILE *fp) - char *buf = NULL; - size_t bufsz = 0; - size_t maxents = 0; -- int rc = 0, is_space_sep = 0; -- -- /* Check if columns separator contains spaces chars */ -- if (ctl->mode == COLUMN_MODE_TABLE && ctl->input_separator_raw) { -- char *p; -- -- for (p = ctl->input_separator_raw; *p; p++) { -- if (isspace(*p)) { -- is_space_sep = 1; -- break; -- } -- } -- } -+ int rc = 0; - - /* Read input */ - do { -@@ -496,19 +482,6 @@ static int read_input(struct column_control *ctl, FILE *fp) - err(EXIT_FAILURE, _("read failed")); - } - str = (char *) skip_space(buf); -- -- /* The table columns separator could be a space. In this case -- * don't skip the separator if at begin of the line. For example: -- * -- * echo -e "\tcol1\tcol2\nrow\t1\t2" \ -- * | column -t -s "$(echo -e '\t')" --table-columns A,B,C -- */ -- if (is_space_sep && str > buf) { -- char *x = strpbrk(buf, ctl->input_separator_raw); -- if (x && x < str) -- str = x; -- } -- - if (str) { - p = strchr(str, '\n'); - if (p) -@@ -517,13 +490,13 @@ static int read_input(struct column_control *ctl, FILE *fp) - if (!str || !*str) - continue; - -- wcs = mbs_to_wcs(str); -+ wcs = mbs_to_wcs(buf); - if (!wcs) { - /* - * Convert broken sequences to \x and continue. - */ - size_t tmpsz = 0; -- char *tmp = mbs_invalid_encode(str, &tmpsz); -+ char *tmp = mbs_invalid_encode(buf, &tmpsz); - - if (!tmp) - err(EXIT_FAILURE, _("read failed")); -@@ -720,7 +693,6 @@ int main(int argc, char **argv) - - ctl.output_separator = " "; - ctl.input_separator = mbs_to_wcs("\t "); -- ctl.input_separator_raw = xstrdup("\t "); - - while ((c = getopt_long(argc, argv, "c:dE:eH:hi:JN:n:O:o:p:R:r:s:T:tVW:x", longopts, NULL)) != -1) { - -@@ -775,9 +747,7 @@ int main(int argc, char **argv) - break; - case 's': - free(ctl.input_separator); -- free(ctl.input_separator_raw); - ctl.input_separator = mbs_to_wcs(optarg); -- ctl.input_separator_raw = xstrdup(optarg); - ctl.greedy = 0; - break; - case 'T': --- -2.14.3 - diff --git a/libmount-don-t-use-symfollow-for-helpers-on-user-mou.patch b/libmount-don-t-use-symfollow-for-helpers-on-user-mou.patch new file mode 100644 index 0000000..edc7477 --- /dev/null +++ b/libmount-don-t-use-symfollow-for-helpers-on-user-mou.patch @@ -0,0 +1,40 @@ +From 76bb9b30cfcf54b59591a57a3d2a747e514469b2 Mon Sep 17 00:00:00 2001 +From: Karel Zak +Date: Thu, 19 Nov 2020 09:49:16 +0100 +Subject: [PATCH] libmount: don't use "symfollow" for helpers on user mounts + +Addresses: https://github.com/karelzak/util-linux/issues/1193 +Signed-off-by: Karel Zak +--- + libmount/src/context_mount.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/libmount/src/context_mount.c b/libmount/src/context_mount.c +index 8c394c1ff..dd1786176 100644 +--- a/libmount/src/context_mount.c ++++ b/libmount/src/context_mount.c +@@ -415,6 +415,9 @@ static int generate_helper_optstr(struct libmnt_context *cxt, char **optstr) + * string, because there is nothing like MS_EXEC (we only have + * MS_NOEXEC in mount flags and we don't care about the original + * mount string in libmount for VFS options). ++ * ++ * This use-case makes sense for MS_SECURE flags only (see ++ * mnt_optstr_get_flags() and mnt_context_merge_mflags()). + */ + if (!(cxt->mountflags & MS_NOEXEC)) + mnt_optstr_append_option(optstr, "exec", NULL); +@@ -422,11 +425,8 @@ static int generate_helper_optstr(struct libmnt_context *cxt, char **optstr) + mnt_optstr_append_option(optstr, "suid", NULL); + if (!(cxt->mountflags & MS_NODEV)) + mnt_optstr_append_option(optstr, "dev", NULL); +- if (!(cxt->mountflags & MS_NOSYMFOLLOW)) +- mnt_optstr_append_option(optstr, "symfollow", NULL); + } + +- + if (cxt->flags & MNT_FL_SAVED_USER) + rc = mnt_optstr_set_option(optstr, "user", cxt->orig_user); + if (rc) +-- +2.25.4 + diff --git a/0002-libmount-remove-read-mountinfo-workaround.patch b/libmount-remove-read-mountinfo-workaround.patch similarity index 100% rename from 0002-libmount-remove-read-mountinfo-workaround.patch rename to libmount-remove-read-mountinfo-workaround.patch diff --git a/2.36-login-lastlog-create.patch b/login-lastlog-create.patch similarity index 100% rename from 2.36-login-lastlog-create.patch rename to login-lastlog-create.patch diff --git a/util-linux.spec b/util-linux.spec index 85cf53a..4541839 100644 --- a/util-linux.spec +++ b/util-linux.spec @@ -2,7 +2,7 @@ Summary: A collection of basic system utilities Name: util-linux Version: 2.36.1 -Release: 1%{?dist} +Release: 2%{?dist} License: GPLv2 and GPLv2+ and LGPLv2+ and BSD with advertising and Public Domain URL: http://en.wikipedia.org/wiki/Util-linux @@ -103,10 +103,12 @@ Requires: libfdisk = %{version}-%{release} ### Ready for upstream? ### # 151635 - makeing /var/log/lastlog -Patch0: 2.36-login-lastlog-create.patch +Patch0: login-lastlog-create.patch # https://github.com/karelzak/util-linux/commit/57898c3a7ee8fc5933cddd4526bb3980bef85a02 # The workaround is unnecessary on Fedora with kernel >= 5.8. -Patch1: 0002-libmount-remove-read-mountinfo-workaround.patch +Patch1: libmount-remove-read-mountinfo-workaround.patch +# usptream patch, https://github.com/karelzak/util-linux/issues/1193 +Patch2: libmount-don-t-use-symfollow-for-helpers-on-user-mou.patch %description The util-linux package contains a large variety of low-level system @@ -939,6 +941,11 @@ fi %{_libdir}/python*/site-packages/libmount/ %changelog +* Thu Nov 19 2020 Karel Zak - 2.36.1-2 +- remove unused patches +- remove versions and seq.numbers from patch names +- fix mount "symfollow" issue (upstream patch) + * Mon Nov 16 2020 Karel Zak - 2.36.1-1 - upgrade to stable upstream 2.36.1 https://www.kernel.org/pub/linux/utils/util-linux/v2.36/v2.36.1-ReleaseNotes