!157 [sync] PR-152: sync community patches
From: @openeuler-sync-bot Reviewed-by: @openeuler-basic Signed-off-by: @openeuler-basic
This commit is contained in:
commit
235acbade1
169
backport-CVE-2022-0563.patch
Normal file
169
backport-CVE-2022-0563.patch
Normal file
@ -0,0 +1,169 @@
|
||||
From faa5a3a83ad0cb5e2c303edbfd8cd823c9d94c17 Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Thu, 10 Feb 2022 12:03:17 +0100
|
||||
Subject: [PATCH] chsh, chfn: remove readline support [CVE-2022-0563]
|
||||
|
||||
The readline library uses INPUTRC= environment variable to get a path
|
||||
to the library config file. When the library cannot parse the
|
||||
specified file, it prints an error message containing data from the
|
||||
file.
|
||||
|
||||
Unfortunately, the library does not use secure_getenv() (or a similar
|
||||
concept) to avoid vulnerabilities that could occur if set-user-ID or
|
||||
set-group-ID programs.
|
||||
|
||||
Reported-by: Rory Mackie <rory.mackie@trailofbits.com>
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
|
||||
---
|
||||
login-utils/Makemodule.am | 2 +-
|
||||
login-utils/chfn.c | 16 ++++----------
|
||||
login-utils/chsh.c | 45 ++++-----------------------------------
|
||||
3 files changed, 9 insertions(+), 54 deletions(-)
|
||||
|
||||
diff --git a/login-utils/Makemodule.am b/login-utils/Makemodule.am
|
||||
index 75c0a67..2d0547a 100644
|
||||
--- a/login-utils/Makemodule.am
|
||||
+++ b/login-utils/Makemodule.am
|
||||
@@ -109,7 +109,7 @@ chfn_chsh_sources = \
|
||||
login-utils/ch-common.c
|
||||
chfn_chsh_cflags = $(SUID_CFLAGS) $(AM_CFLAGS)
|
||||
chfn_chsh_ldflags = $(SUID_LDFLAGS) $(AM_LDFLAGS)
|
||||
-chfn_chsh_ldadd = libcommon.la $(READLINE_LIBS)
|
||||
+chfn_chsh_ldadd = libcommon.la
|
||||
|
||||
if CHFN_CHSH_PASSWORD
|
||||
chfn_chsh_ldadd += -lpam
|
||||
diff --git a/login-utils/chfn.c b/login-utils/chfn.c
|
||||
index ece5cdc..8f00d15 100644
|
||||
--- a/login-utils/chfn.c
|
||||
+++ b/login-utils/chfn.c
|
||||
@@ -56,11 +56,6 @@
|
||||
# include "auth.h"
|
||||
#endif
|
||||
|
||||
-#ifdef HAVE_LIBREADLINE
|
||||
-# define _FUNCTION_DEF
|
||||
-# include <readline/readline.h>
|
||||
-#endif
|
||||
-
|
||||
struct finfo {
|
||||
char *full_name;
|
||||
char *office;
|
||||
@@ -228,24 +223,21 @@ static char *ask_new_field(struct chfn_control *ctl, const char *question,
|
||||
{
|
||||
int len;
|
||||
char *buf = NULL; /* leave initialized to NULL or getline segfaults */
|
||||
-#ifndef HAVE_LIBREADLINE
|
||||
size_t dummy = 0;
|
||||
-#endif
|
||||
|
||||
if (!def_val)
|
||||
def_val = "";
|
||||
+
|
||||
while (true) {
|
||||
printf("%s [%s]:", question, def_val);
|
||||
__fpurge(stdin);
|
||||
-#ifdef HAVE_LIBREADLINE
|
||||
- rl_bind_key('\t', rl_insert);
|
||||
- if ((buf = readline(" ")) == NULL)
|
||||
-#else
|
||||
+
|
||||
putchar(' ');
|
||||
fflush(stdout);
|
||||
+
|
||||
if (getline(&buf, &dummy, stdin) < 0)
|
||||
-#endif
|
||||
errx(EXIT_FAILURE, _("Aborted."));
|
||||
+
|
||||
/* remove white spaces from string end */
|
||||
ltrim_whitespace((unsigned char *) buf);
|
||||
len = rtrim_whitespace((unsigned char *) buf);
|
||||
diff --git a/login-utils/chsh.c b/login-utils/chsh.c
|
||||
index 3b446be..b7e7017 100644
|
||||
--- a/login-utils/chsh.c
|
||||
+++ b/login-utils/chsh.c
|
||||
@@ -50,7 +50,6 @@
|
||||
# include "selinux-utils.h"
|
||||
#endif
|
||||
|
||||
-
|
||||
#ifdef HAVE_LIBUSER
|
||||
# include <libuser/user.h>
|
||||
# include "libuser.h"
|
||||
@@ -58,11 +57,6 @@
|
||||
# include "auth.h"
|
||||
#endif
|
||||
|
||||
-#ifdef HAVE_LIBREADLINE
|
||||
-# define _FUNCTION_DEF
|
||||
-# include <readline/readline.h>
|
||||
-#endif
|
||||
-
|
||||
struct sinfo {
|
||||
char *username;
|
||||
char *shell;
|
||||
@@ -121,33 +115,6 @@ static void print_shells(void)
|
||||
endusershell();
|
||||
}
|
||||
|
||||
-#ifdef HAVE_LIBREADLINE
|
||||
-static char *shell_name_generator(const char *text, int state)
|
||||
-{
|
||||
- static size_t len;
|
||||
- char *s;
|
||||
-
|
||||
- if (!state) {
|
||||
- setusershell();
|
||||
- len = strlen(text);
|
||||
- }
|
||||
-
|
||||
- while ((s = getusershell())) {
|
||||
- if (strncmp(s, text, len) == 0)
|
||||
- return xstrdup(s);
|
||||
- }
|
||||
- return NULL;
|
||||
-}
|
||||
-
|
||||
-static char **shell_name_completion(const char *text,
|
||||
- int start __attribute__((__unused__)),
|
||||
- int end __attribute__((__unused__)))
|
||||
-{
|
||||
- rl_attempted_completion_over = 1;
|
||||
- return rl_completion_matches(text, shell_name_generator);
|
||||
-}
|
||||
-#endif
|
||||
-
|
||||
/*
|
||||
* parse_argv () --
|
||||
* parse the command line arguments, and fill in "pinfo" with any
|
||||
@@ -198,22 +165,18 @@ static char *ask_new_shell(char *question, char *oldshell)
|
||||
{
|
||||
int len;
|
||||
char *ans = NULL;
|
||||
-#ifdef HAVE_LIBREADLINE
|
||||
- rl_attempted_completion_function = shell_name_completion;
|
||||
-#else
|
||||
size_t dummy = 0;
|
||||
-#endif
|
||||
+
|
||||
if (!oldshell)
|
||||
oldshell = "";
|
||||
printf("%s [%s]:", question, oldshell);
|
||||
-#ifdef HAVE_LIBREADLINE
|
||||
- if ((ans = readline(" ")) == NULL)
|
||||
-#else
|
||||
+
|
||||
putchar(' ');
|
||||
fflush(stdout);
|
||||
+
|
||||
if (getline(&ans, &dummy, stdin) < 0)
|
||||
-#endif
|
||||
return NULL;
|
||||
+
|
||||
/* remove the newline at the end of ans. */
|
||||
ltrim_whitespace((unsigned char *) ans);
|
||||
len = rtrim_whitespace((unsigned char *) ans);
|
||||
--
|
||||
2.27.0
|
||||
|
||||
22
backport-Fix-integer-overflow-for-alpha-like-linux.patch
Normal file
22
backport-Fix-integer-overflow-for-alpha-like-linux.patch
Normal file
@ -0,0 +1,22 @@
|
||||
From db5aa5e5d8932c73f1b9f01fe567fa343898b825 Mon Sep 17 00:00:00 2001
|
||||
From: chanthmiao <chanthmiao@outlook.com>
|
||||
Date: Sun, 5 Dec 2021 16:58:17 +0800
|
||||
Subject: [PATCH] Fix integer overflow for alpha like linux
|
||||
|
||||
---
|
||||
sys-utils/swapon.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/sys-utils/swapon.c b/sys-utils/swapon.c
|
||||
index ed6be244ec..76c5cac51b 100644
|
||||
--- a/sys-utils/swapon.c
|
||||
+++ b/sys-utils/swapon.c
|
||||
@@ -543,7 +543,7 @@ static int swapon_checks(const struct swapon_ctl *ctl, struct swap_device *dev)
|
||||
|
||||
/* test for holes by LBT */
|
||||
if (S_ISREG(st.st_mode)) {
|
||||
- if (st.st_blocks * 512 < st.st_size) {
|
||||
+ if (st.st_blocks * 512L < st.st_size) {
|
||||
warnx(_("%s: skipping - it appears to have holes."),
|
||||
dev->path);
|
||||
goto err;
|
||||
103
backport-column-don-t-require-column-name-for-JSON.patch
Normal file
103
backport-column-don-t-require-column-name-for-JSON.patch
Normal file
@ -0,0 +1,103 @@
|
||||
From fd75b96898c455c35c045bc59a2a4a546e79f223 Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Wed, 23 Mar 2022 12:50:07 +0100
|
||||
Subject: [PATCH] column: don't require column name for JSON
|
||||
|
||||
The "--table-hide -" hides all unnamed columns, but this does not work
|
||||
for JSON output. This patch fixes this issue.
|
||||
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
---
|
||||
text-utils/column.c | 37 +++++++++++++++++++++++++++++++++----
|
||||
1 file changed, 33 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/text-utils/column.c b/text-utils/column.c
|
||||
index f9878e4..0fc4708 100644
|
||||
--- a/text-utils/column.c
|
||||
+++ b/text-utils/column.c
|
||||
@@ -96,6 +96,7 @@ struct column_control {
|
||||
unsigned int greedy :1,
|
||||
json :1,
|
||||
header_repeat :1,
|
||||
+ hide_unnamed :1,
|
||||
keep_empty_lines :1, /* --keep-empty-lines */
|
||||
tab_noheadings :1;
|
||||
};
|
||||
@@ -196,7 +197,10 @@ static char **split_or_error(const char *str, const char *errmsg)
|
||||
if (!res) {
|
||||
if (errno == ENOMEM)
|
||||
err_oom();
|
||||
- errx(EXIT_FAILURE, "%s: '%s'", errmsg, str);
|
||||
+ if (errmsg)
|
||||
+ errx(EXIT_FAILURE, "%s: '%s'", errmsg, str);
|
||||
+ else
|
||||
+ return NULL;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
@@ -275,6 +279,29 @@ static int column_set_flag(struct libscols_column *cl, int fl)
|
||||
return scols_column_set_flags(cl, cur | fl);
|
||||
}
|
||||
|
||||
+static int has_unnamed(const char *list)
|
||||
+{
|
||||
+ char **all, **one;
|
||||
+
|
||||
+ if (!list)
|
||||
+ return 0;
|
||||
+ if (strcmp(list, "-") == 0)
|
||||
+ return 1;
|
||||
+ if (!strchr(list, ','))
|
||||
+ return 0;
|
||||
+
|
||||
+ all = split_or_error(list, NULL);
|
||||
+ if (all) {
|
||||
+ STRV_FOREACH(one, all) {
|
||||
+ if (strcmp(*one, "-") == 0)
|
||||
+ return 1;
|
||||
+ }
|
||||
+ strv_free(all);
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
static void apply_columnflag_from_list(struct column_control *ctl, const char *list,
|
||||
int flag, const char *errmsg)
|
||||
{
|
||||
@@ -300,7 +327,7 @@ static void apply_columnflag_from_list(struct column_control *ctl, const char *l
|
||||
|
||||
/* apply to columns specified by name */
|
||||
STRV_FOREACH(one, all) {
|
||||
- if (flag == SCOLS_FL_HIDDEN && strcmp(*one, "-") == 0) {
|
||||
+ if (strcmp(*one, "-") == 0) {
|
||||
unnamed = 1;
|
||||
continue;
|
||||
}
|
||||
@@ -461,12 +488,13 @@ static int add_line_to_table(struct column_control *ctl, wchar_t *wcs0)
|
||||
if (!wcdata)
|
||||
break;
|
||||
if (scols_table_get_ncols(ctl->tab) < n + 1) {
|
||||
- if (scols_table_is_json(ctl->tab))
|
||||
+ if (scols_table_is_json(ctl->tab) && !ctl->hide_unnamed)
|
||||
errx(EXIT_FAILURE, _("line %zu: for JSON the name of the "
|
||||
"column %zu is required"),
|
||||
scols_table_get_nlines(ctl->tab) + 1,
|
||||
n + 1);
|
||||
- scols_table_new_column(ctl->tab, NULL, 0, 0);
|
||||
+ scols_table_new_column(ctl->tab, NULL, 0,
|
||||
+ ctl->hide_unnamed ? SCOLS_FL_HIDDEN : 0);
|
||||
}
|
||||
if (!ln) {
|
||||
ln = scols_table_new_line(ctl->tab, NULL);
|
||||
@@ -774,6 +802,7 @@ int main(int argc, char **argv)
|
||||
break;
|
||||
case 'H':
|
||||
ctl.tab_colhide = optarg;
|
||||
+ ctl.hide_unnamed = has_unnamed(ctl.tab_colhide);
|
||||
break;
|
||||
case 'i':
|
||||
ctl.tree_id = optarg;
|
||||
--
|
||||
2.27.0
|
||||
|
||||
30
backport-dmesg-fix-since-and-until.patch
Normal file
30
backport-dmesg-fix-since-and-until.patch
Normal file
@ -0,0 +1,30 @@
|
||||
From c9667633f1f6b7a84116f2af067d1d15c72e6382 Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Wed, 20 Apr 2022 14:42:32 +0200
|
||||
Subject: [PATCH] dmesg: fix --since and --until
|
||||
|
||||
Now --since and --until requires any time field in the output (e.g.
|
||||
--ctime,-T), it means "dmesg --since '1 day ago'" doesn't work, but
|
||||
"dmesg -T --since '1 day ago'" works as expected.
|
||||
|
||||
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=2076829
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
---
|
||||
sys-utils/dmesg.c | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/sys-utils/dmesg.c b/sys-utils/dmesg.c
|
||||
index 7cca88f2bb..017936255f 100644
|
||||
--- a/sys-utils/dmesg.c
|
||||
+++ b/sys-utils/dmesg.c
|
||||
@@ -1592,7 +1592,9 @@ int main(int argc, char *argv[])
|
||||
|
||||
if ((is_timefmt(&ctl, RELTIME) ||
|
||||
is_timefmt(&ctl, CTIME) ||
|
||||
- is_timefmt(&ctl, ISO8601))) {
|
||||
+ is_timefmt(&ctl, ISO8601)) ||
|
||||
+ ctl.since ||
|
||||
+ ctl.until) {
|
||||
if (dmesg_get_boot_time(&ctl.boot_time) != 0)
|
||||
ctl.time_fmt = DMESG_TIMEFTM_NONE;
|
||||
else
|
||||
28
backport-fflush-stdout-before-reading-from-stdin.patch
Normal file
28
backport-fflush-stdout-before-reading-from-stdin.patch
Normal file
@ -0,0 +1,28 @@
|
||||
From 0a08200bd5664d1849e477f7f776ab4d13bb8422 Mon Sep 17 00:00:00 2001
|
||||
From: Lorenzo Beretta <vc.net.loreb@gmail.com>
|
||||
Date: Mon, 25 Oct 2021 15:28:02 +0200
|
||||
Subject: [PATCH] chsh: fflush stdout before reading from stdin
|
||||
|
||||
Same problem as described in https://github.com/karelzak/util-linux/pull/1481
|
||||
|
||||
Signed-off-by: Lorenzo Beretta <vc.net.loreb@gmail.com>
|
||||
|
||||
---
|
||||
login-utils/chsh.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/login-utils/chsh.c b/login-utils/chsh.c
|
||||
index 3497120..3b446be 100644
|
||||
--- a/login-utils/chsh.c
|
||||
+++ b/login-utils/chsh.c
|
||||
@@ -210,6 +210,7 @@ static char *ask_new_shell(char *question, char *oldshell)
|
||||
if ((ans = readline(" ")) == NULL)
|
||||
#else
|
||||
putchar(' ');
|
||||
+ fflush(stdout);
|
||||
if (getline(&ans, &dummy, stdin) < 0)
|
||||
#endif
|
||||
return NULL;
|
||||
--
|
||||
2.27.0
|
||||
|
||||
@ -0,0 +1,38 @@
|
||||
From 05907d0d9e7c85f33e168feab1eb36b464425054 Mon Sep 17 00:00:00 2001
|
||||
From: Lorenzo Beretta <vc.net.loreb@gmail.com>
|
||||
Date: Mon, 25 Oct 2021 14:06:00 +0200
|
||||
Subject: [PATCH] chfn: flush stdout before reading stdin and fix uninitialized
|
||||
variable
|
||||
|
||||
Same problem as described in https://github.com/karelzak/util-linux/pull/1481
|
||||
|
||||
Signed-off-by: Lorenzo Beretta <vc.net.loreb@gmail.com>
|
||||
|
||||
---
|
||||
login-utils/chfn.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/login-utils/chfn.c b/login-utils/chfn.c
|
||||
index 2508e14..ece5cdc 100644
|
||||
--- a/login-utils/chfn.c
|
||||
+++ b/login-utils/chfn.c
|
||||
@@ -227,7 +227,7 @@ static char *ask_new_field(struct chfn_control *ctl, const char *question,
|
||||
char *def_val)
|
||||
{
|
||||
int len;
|
||||
- char *buf;
|
||||
+ char *buf = NULL; /* leave initialized to NULL or getline segfaults */
|
||||
#ifndef HAVE_LIBREADLINE
|
||||
size_t dummy = 0;
|
||||
#endif
|
||||
@@ -242,6 +242,7 @@ static char *ask_new_field(struct chfn_control *ctl, const char *question,
|
||||
if ((buf = readline(" ")) == NULL)
|
||||
#else
|
||||
putchar(' ');
|
||||
+ fflush(stdout);
|
||||
if (getline(&buf, &dummy, stdin) < 0)
|
||||
#endif
|
||||
errx(EXIT_FAILURE, _("Aborted."));
|
||||
--
|
||||
2.27.0
|
||||
|
||||
35
backport-last-don-t-assume-zero-terminate-strings.patch
Normal file
35
backport-last-don-t-assume-zero-terminate-strings.patch
Normal file
@ -0,0 +1,35 @@
|
||||
From 6cd0043221b31a344db8f5dcb82822a2519a2e74 Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Mon, 7 Feb 2022 13:34:43 +0100
|
||||
Subject: [PATCH] last: don't assume zero terminate strings
|
||||
|
||||
Detected by fuzzer and AddressSanitizer. The utmp strings do not
|
||||
have to be zero terminated.
|
||||
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
---
|
||||
login-utils/last.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/login-utils/last.c b/login-utils/last.c
|
||||
index c7aec4c116..84629278e5 100644
|
||||
--- a/login-utils/last.c
|
||||
+++ b/login-utils/last.c
|
||||
@@ -757,7 +757,7 @@ static void process_wtmp_file(const struct last_control *ctl,
|
||||
else {
|
||||
if (ut.ut_type != DEAD_PROCESS &&
|
||||
ut.ut_user[0] && ut.ut_line[0] &&
|
||||
- strcmp(ut.ut_user, "LOGIN") != 0)
|
||||
+ strncmp(ut.ut_user, "LOGIN", 5) != 0)
|
||||
ut.ut_type = USER_PROCESS;
|
||||
/*
|
||||
* Even worse, applications that write ghost
|
||||
@@ -770,7 +770,7 @@ static void process_wtmp_file(const struct last_control *ctl,
|
||||
/*
|
||||
* Clock changes.
|
||||
*/
|
||||
- if (strcmp(ut.ut_user, "date") == 0) {
|
||||
+ if (strncmp(ut.ut_user, "date", 4) == 0) {
|
||||
if (ut.ut_line[0] == '|')
|
||||
ut.ut_type = OLD_TIME;
|
||||
if (ut.ut_line[0] == '{')
|
||||
@ -0,0 +1,30 @@
|
||||
From 16a2e0603f15c4a8f4517264930c7bdea5885bae Mon Sep 17 00:00:00 2001
|
||||
From: Mike Gilbert <floppym@gentoo.org>
|
||||
Date: Tue, 26 Apr 2022 13:58:12 -0400
|
||||
Subject: [PATCH] lib: allow safe_getenv to work for non-root users
|
||||
|
||||
This allows users to override settings like BLKID_FILE, as is done in
|
||||
the e2fsprogs test suite.
|
||||
|
||||
Bug: https://bugs.gentoo.org/839825
|
||||
Fixes: 035507c84b53bceb143d0923e65916cbf90979c7
|
||||
Signed-off-by: Mike Gilbert <floppym@gentoo.org>
|
||||
---
|
||||
lib/env.c | 4 +---
|
||||
1 file changed, 1 insertion(+), 3 deletions(-)
|
||||
|
||||
diff --git a/lib/env.c b/lib/env.c
|
||||
index a3dd335bfe..37125f4d5a 100644
|
||||
--- a/lib/env.c
|
||||
+++ b/lib/env.c
|
||||
@@ -161,9 +161,7 @@ void sanitize_env(void)
|
||||
|
||||
char *safe_getenv(const char *arg)
|
||||
{
|
||||
- uid_t ruid = getuid();
|
||||
-
|
||||
- if (ruid != 0 || (ruid != geteuid()) || (getgid() != getegid()))
|
||||
+ if ((getuid() != geteuid()) || (getgid() != getegid()))
|
||||
return NULL;
|
||||
#ifdef HAVE_PRCTL
|
||||
if (prctl(PR_GET_DUMPABLE, 0, 0, 0, 0) == 0)
|
||||
@ -0,0 +1,57 @@
|
||||
From 41a27709e9028940578a5cdae17292e432fa23fa Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Mon, 29 Nov 2021 13:25:16 +0100
|
||||
Subject: [PATCH] lib/path: make path use more robust [coverity scan]
|
||||
|
||||
*** CID 374365: Null pointer dereferences (FORWARD_NULL)
|
||||
/lib/path.c: 364 in ul_path_stat()
|
||||
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
---
|
||||
lib/path.c | 5 ++++-
|
||||
lib/sysfs.c | 2 +-
|
||||
2 files changed, 5 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/lib/path.c b/lib/path.c
|
||||
index 0d357966f3..8a2b882fe4 100644
|
||||
--- a/lib/path.c
|
||||
+++ b/lib/path.c
|
||||
@@ -344,7 +344,7 @@ int ul_path_stat(struct path_cxt *pc, struct stat *sb, int flags, const char *pa
|
||||
int rc;
|
||||
|
||||
if (!pc) {
|
||||
- rc = stat(path, sb);
|
||||
+ rc = path ? stat(path, sb) : -EINVAL;
|
||||
DBG(CXT, ul_debug("stat '%s' [no context, rc=%d]", path, rc));
|
||||
} else {
|
||||
int dir = ul_path_get_dirfd(pc);
|
||||
@@ -359,6 +359,7 @@ int ul_path_stat(struct path_cxt *pc, struct stat *sb, int flags, const char *pa
|
||||
rc = fstat(dir, sb); /* dir itself */
|
||||
|
||||
if (rc && errno == ENOENT
|
||||
+ && path
|
||||
&& pc->redirect_on_enoent
|
||||
&& pc->redirect_on_enoent(pc, path, &dir) == 0)
|
||||
rc = fstatat(dir, path, sb, 0);
|
||||
@@ -372,6 +373,8 @@ int ul_path_open(struct path_cxt *pc, int flags, const char *path)
|
||||
{
|
||||
int fd;
|
||||
|
||||
+ if (!path)
|
||||
+ return -EINVAL;
|
||||
if (!pc) {
|
||||
fd = open(path, flags);
|
||||
DBG(CXT, ul_debug("opening '%s' [no context]", path));
|
||||
diff --git a/lib/sysfs.c b/lib/sysfs.c
|
||||
index d8206be7ab..84af4fe3cb 100644
|
||||
--- a/lib/sysfs.c
|
||||
+++ b/lib/sysfs.c
|
||||
@@ -165,7 +165,7 @@ static int sysfs_blkdev_enoent_redirect(struct path_cxt *pc, const char *path, i
|
||||
{
|
||||
struct sysfs_blkdev *blk = ul_path_get_dialect(pc);
|
||||
|
||||
- if (blk && blk->parent && strncmp(path, "queue/", 6) == 0) {
|
||||
+ if (blk && blk->parent && path && strncmp(path, "queue/", 6) == 0) {
|
||||
*dirfd = ul_path_get_dirfd(blk->parent);
|
||||
if (*dirfd >= 0) {
|
||||
DBG(CXT, ul_debugobj(pc, "%s redirected to parent", path));
|
||||
@ -0,0 +1,90 @@
|
||||
From 3b888573661d43ea069e98a083bd10e33a2ece69 Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Tue, 19 Apr 2022 11:38:57 +0200
|
||||
Subject: [PATCH] lib/strutils: improve strtoul_or_err() for negative numbers
|
||||
|
||||
Let's use the same code for strtoul_or_err() and strtol_or_err() as we
|
||||
already use for strtoxXX_or_err() functions. It resolves issue with
|
||||
negative numbers.
|
||||
|
||||
This problem has been discovered by "./eject -x -1 -v" where -x is
|
||||
based on strtoul_or_err(), but accepts negative number (-1).
|
||||
|
||||
Reported-by: Enze Li <lienze@kylinos.cn>
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
---
|
||||
include/strutils.h | 4 ++--
|
||||
lib/strutils.c | 42 ------------------------------------------
|
||||
2 files changed, 2 insertions(+), 44 deletions(-)
|
||||
|
||||
diff --git a/include/strutils.h b/include/strutils.h
|
||||
index a84d295..2849ef3 100644
|
||||
--- a/include/strutils.h
|
||||
+++ b/include/strutils.h
|
||||
@@ -42,8 +42,8 @@ extern uint64_t str2unum_or_err(const char *str, int base, const char *errmesg,
|
||||
extern double strtod_or_err(const char *str, const char *errmesg);
|
||||
extern long double strtold_or_err(const char *str, const char *errmesg);
|
||||
|
||||
-extern long strtol_or_err(const char *str, const char *errmesg);
|
||||
-extern unsigned long strtoul_or_err(const char *str, const char *errmesg);
|
||||
+#define strtol_or_err(_s, _e) (long) str2num_or_err(_s, 10, _e, LONG_MIN, LONG_MAX)
|
||||
+#define strtoul_or_err(_s, _e) (unsigned long) str2unum_or_err(_s, 10, _e, ULONG_MAX)
|
||||
|
||||
extern void strtotimeval_or_err(const char *str, struct timeval *tv,
|
||||
const char *errmesg);
|
||||
diff --git a/lib/strutils.c b/lib/strutils.c
|
||||
index 096aaf5..4117e03 100644
|
||||
--- a/lib/strutils.c
|
||||
+++ b/lib/strutils.c
|
||||
@@ -471,48 +471,6 @@ err:
|
||||
errx(STRTOXX_EXIT_CODE, "%s: '%s'", errmesg, str);
|
||||
}
|
||||
|
||||
-long strtol_or_err(const char *str, const char *errmesg)
|
||||
-{
|
||||
- long num;
|
||||
- char *end = NULL;
|
||||
-
|
||||
- errno = 0;
|
||||
- if (str == NULL || *str == '\0')
|
||||
- goto err;
|
||||
- num = strtol(str, &end, 10);
|
||||
-
|
||||
- if (errno || str == end || (end && *end))
|
||||
- goto err;
|
||||
-
|
||||
- return num;
|
||||
-err:
|
||||
- if (errno == ERANGE)
|
||||
- err(STRTOXX_EXIT_CODE, "%s: '%s'", errmesg, str);
|
||||
-
|
||||
- errx(STRTOXX_EXIT_CODE, "%s: '%s'", errmesg, str);
|
||||
-}
|
||||
-
|
||||
-unsigned long strtoul_or_err(const char *str, const char *errmesg)
|
||||
-{
|
||||
- unsigned long num;
|
||||
- char *end = NULL;
|
||||
-
|
||||
- errno = 0;
|
||||
- if (str == NULL || *str == '\0')
|
||||
- goto err;
|
||||
- num = strtoul(str, &end, 10);
|
||||
-
|
||||
- if (errno || str == end || (end && *end))
|
||||
- goto err;
|
||||
-
|
||||
- return num;
|
||||
-err:
|
||||
- if (errno == ERANGE)
|
||||
- err(STRTOXX_EXIT_CODE, "%s: '%s'", errmesg, str);
|
||||
-
|
||||
- errx(STRTOXX_EXIT_CODE, "%s: '%s'", errmesg, str);
|
||||
-}
|
||||
-
|
||||
uintmax_t strtosize_or_err(const char *str, const char *errmesg)
|
||||
{
|
||||
uintmax_t num;
|
||||
--
|
||||
2.27.0
|
||||
|
||||
@ -0,0 +1,140 @@
|
||||
From 84d38ae3eca523ef990cb848563cc63de25266e6 Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Fri, 19 Nov 2021 14:19:03 +0100
|
||||
Subject: [PATCH] libblkid: don't mark cache as "probed" if /sys not available
|
||||
|
||||
For "mount --all" we need to read the cache more than once in a short
|
||||
time. The library checks the delay between probes, and if the delay is
|
||||
too short, it does not read devices. This is a problem on boot when there
|
||||
are no /sys, and the cache is empty. In this case, we need to check
|
||||
for /sys until it's available constantly.
|
||||
|
||||
https://github.com/util-linux/util-linux/issues/1492
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
---
|
||||
libblkid/src/devname.c | 26 +++++++++++++++++---------
|
||||
libblkid/src/resolve.c | 2 +-
|
||||
libblkid/src/tag.c | 8 +++++---
|
||||
3 files changed, 23 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/libblkid/src/devname.c b/libblkid/src/devname.c
|
||||
index c541d30..80574f3 100644
|
||||
--- a/libblkid/src/devname.c
|
||||
+++ b/libblkid/src/devname.c
|
||||
@@ -456,6 +456,8 @@ sysfs_probe_all(blkid_cache cache, int only_if_new, int only_removable)
|
||||
if (!sysfs)
|
||||
return -BLKID_ERR_SYSFS;
|
||||
|
||||
+ DBG(DEVNAME, ul_debug(" probe /sys/block"));
|
||||
+
|
||||
/* scan /sys/block */
|
||||
while ((dev = xreaddir(sysfs))) {
|
||||
DIR *dir = NULL;
|
||||
@@ -560,14 +562,18 @@ sysfs_probe_all(blkid_cache cache, int only_if_new, int only_removable)
|
||||
/*
|
||||
* Read the device data for all available block devices in the system.
|
||||
*/
|
||||
-static int probe_all(blkid_cache cache, int only_if_new)
|
||||
+static int probe_all(blkid_cache cache, int only_if_new, int update_interval)
|
||||
{
|
||||
+ int rc;
|
||||
+
|
||||
if (!cache)
|
||||
return -BLKID_ERR_PARAM;
|
||||
|
||||
if (cache->bic_flags & BLKID_BIC_FL_PROBED &&
|
||||
- time(NULL) - cache->bic_time < BLKID_PROBE_INTERVAL)
|
||||
+ time(NULL) - cache->bic_time < BLKID_PROBE_INTERVAL) {
|
||||
+ DBG(PROBE, ul_debug("don't re-probe [delay < %d]", BLKID_PROBE_INTERVAL));
|
||||
return 0;
|
||||
+ }
|
||||
|
||||
blkid_read_cache(cache);
|
||||
|
||||
@@ -577,7 +583,13 @@ static int probe_all(blkid_cache cache, int only_if_new)
|
||||
#endif
|
||||
ubi_probe_all(cache, only_if_new);
|
||||
|
||||
- sysfs_probe_all(cache, only_if_new, 0);
|
||||
+ rc = sysfs_probe_all(cache, only_if_new, 0);
|
||||
+
|
||||
+ /* Don't mark the change as "probed" if /sys not avalable */
|
||||
+ if (update_interval && rc == 0) {
|
||||
+ cache->bic_time = time(NULL);
|
||||
+ cache->bic_flags |= BLKID_BIC_FL_PROBED;
|
||||
+ }
|
||||
|
||||
blkid_flush_cache(cache);
|
||||
return 0;
|
||||
@@ -596,11 +608,7 @@ int blkid_probe_all(blkid_cache cache)
|
||||
int ret;
|
||||
|
||||
DBG(PROBE, ul_debug("Begin blkid_probe_all()"));
|
||||
- ret = probe_all(cache, 0);
|
||||
- if (ret == 0) {
|
||||
- cache->bic_time = time(NULL);
|
||||
- cache->bic_flags |= BLKID_BIC_FL_PROBED;
|
||||
- }
|
||||
+ ret = probe_all(cache, 0, 1);
|
||||
DBG(PROBE, ul_debug("End blkid_probe_all() [rc=%d]", ret));
|
||||
return ret;
|
||||
}
|
||||
@@ -618,7 +626,7 @@ int blkid_probe_all_new(blkid_cache cache)
|
||||
int ret;
|
||||
|
||||
DBG(PROBE, ul_debug("Begin blkid_probe_all_new()"));
|
||||
- ret = probe_all(cache, 1);
|
||||
+ ret = probe_all(cache, 1, 0);
|
||||
DBG(PROBE, ul_debug("End blkid_probe_all_new() [rc=%d]", ret));
|
||||
return ret;
|
||||
}
|
||||
diff --git a/libblkid/src/resolve.c b/libblkid/src/resolve.c
|
||||
index 641b022..16653fa 100644
|
||||
--- a/libblkid/src/resolve.c
|
||||
+++ b/libblkid/src/resolve.c
|
||||
@@ -32,7 +32,7 @@ char *blkid_get_tag_value(blkid_cache cache, const char *tagname,
|
||||
blkid_cache c = cache;
|
||||
char *ret = NULL;
|
||||
|
||||
- DBG(TAG, ul_debug("looking for %s on %s", tagname, devname));
|
||||
+ DBG(TAG, ul_debug("looking for tag %s on %s device", tagname, devname));
|
||||
|
||||
if (!devname)
|
||||
return NULL;
|
||||
diff --git a/libblkid/src/tag.c b/libblkid/src/tag.c
|
||||
index 390a648..1783365 100644
|
||||
--- a/libblkid/src/tag.c
|
||||
+++ b/libblkid/src/tag.c
|
||||
@@ -326,14 +326,14 @@ blkid_dev blkid_find_dev_with_tag(blkid_cache cache,
|
||||
blkid_dev dev;
|
||||
int pri;
|
||||
struct list_head *p;
|
||||
- int probe_new = 0;
|
||||
+ int probe_new = 0, probe_all = 0;
|
||||
|
||||
if (!cache || !type || !value)
|
||||
return NULL;
|
||||
|
||||
blkid_read_cache(cache);
|
||||
|
||||
- DBG(TAG, ul_debug("looking for %s=%s in cache", type, value));
|
||||
+ DBG(TAG, ul_debug("looking for tag %s=%s in cache", type, value));
|
||||
|
||||
try_again:
|
||||
pri = -1;
|
||||
@@ -366,9 +366,11 @@ try_again:
|
||||
goto try_again;
|
||||
}
|
||||
|
||||
- if (!dev && !(cache->bic_flags & BLKID_BIC_FL_PROBED)) {
|
||||
+ if (!dev && !probe_all
|
||||
+ && !(cache->bic_flags & BLKID_BIC_FL_PROBED)) {
|
||||
if (blkid_probe_all(cache) < 0)
|
||||
return NULL;
|
||||
+ probe_all++;
|
||||
goto try_again;
|
||||
}
|
||||
return dev;
|
||||
--
|
||||
2.27.0
|
||||
|
||||
@ -0,0 +1,24 @@
|
||||
From 7ebfe9b411c12223a2500ca62d6be37c48e2d83d Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Thu, 2 Jun 2022 16:02:54 +0200
|
||||
Subject: [PATCH] libblkid: (hfs) fix make sure buffer is large enough
|
||||
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
---
|
||||
libblkid/src/superblocks/ntfs.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/libblkid/src/superblocks/ntfs.c b/libblkid/src/superblocks/ntfs.c
|
||||
index 9f1927cf74..b5799c3e33 100644
|
||||
--- a/libblkid/src/superblocks/ntfs.c
|
||||
+++ b/libblkid/src/superblocks/ntfs.c
|
||||
@@ -158,6 +158,9 @@ static int __probe_ntfs(blkid_probe pr, const struct blkid_idmag *mag, int save_
|
||||
sectors_per_cluster, nr_clusters,
|
||||
off));
|
||||
|
||||
+ if (mft_record_size < 4)
|
||||
+ return 1;
|
||||
+
|
||||
buf_mft = blkid_probe_get_buffer(pr, off, mft_record_size);
|
||||
if (!buf_mft)
|
||||
return errno ? -errno : 1;
|
||||
22
backport-libblkid-make-blkid_free_probe-more-robust.patch
Normal file
22
backport-libblkid-make-blkid_free_probe-more-robust.patch
Normal file
@ -0,0 +1,22 @@
|
||||
From 5caa4117b40ea9babf4aee6e8786fb70507ee1b8 Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Thu, 17 Mar 2022 12:41:48 +0100
|
||||
Subject: [PATCH] libblkid: make blkid_free_probe() more robust
|
||||
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
---
|
||||
libblkid/src/probe.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/libblkid/src/probe.c b/libblkid/src/probe.c
|
||||
index 2e0e08ac1d..31706240fc 100644
|
||||
--- a/libblkid/src/probe.c
|
||||
+++ b/libblkid/src/probe.c
|
||||
@@ -251,6 +251,7 @@ void blkid_free_probe(blkid_probe pr)
|
||||
if (ch->driver->free_data)
|
||||
ch->driver->free_data(pr, ch->data);
|
||||
free(ch->fltr);
|
||||
+ ch->fltr = NULL;
|
||||
}
|
||||
|
||||
if ((pr->flags & BLKID_FL_PRIVATE_FD) && pr->fd >= 0)
|
||||
@ -0,0 +1,113 @@
|
||||
From b8f2fce2a20944cd8b1a7e91dfa04f9725ec3eb8 Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Thu, 18 Nov 2021 11:47:08 +0100
|
||||
Subject: [PATCH] libmount: (--all) continue although /proc is not mounted
|
||||
|
||||
Now 'mount --all' ends with error if /proc is not mounted and there is
|
||||
some other entry before /proc in fstab. This commit improves this
|
||||
situation and ignores all mount table related errors if the table is
|
||||
empty.
|
||||
|
||||
This is important for situation when there is for example "/" as the
|
||||
first line in fstab.
|
||||
|
||||
Addresses: https://github.com/util-linux/util-linux/issues/1492
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
---
|
||||
libmount/src/context.c | 25 +++++++++++++++++--------
|
||||
libmount/src/context_mount.c | 9 ++++++++-
|
||||
sys-utils/mount.8.adoc | 2 ++
|
||||
3 files changed, 27 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/libmount/src/context.c b/libmount/src/context.c
|
||||
index 3b32224..bd215c0 100644
|
||||
--- a/libmount/src/context.c
|
||||
+++ b/libmount/src/context.c
|
||||
@@ -1298,6 +1298,16 @@ int mnt_context_get_mtab(struct libmnt_context *cxt, struct libmnt_table **tb)
|
||||
cxt->table_fltrcb_data);
|
||||
|
||||
mnt_table_set_cache(cxt->mtab, mnt_context_get_cache(cxt));
|
||||
+ }
|
||||
+
|
||||
+ /* Read the table; it's empty, because this first mnt_context_get_mtab()
|
||||
+ * call, or because /proc was not accessible in previous calls */
|
||||
+ if (mnt_table_is_empty(cxt->mtab)) {
|
||||
+ if (!ns_old) {
|
||||
+ ns_old = mnt_context_switch_target_ns(cxt);
|
||||
+ if (!ns_old)
|
||||
+ return -MNT_ERR_NAMESPACE;
|
||||
+ }
|
||||
|
||||
/*
|
||||
* Note that mtab_path is NULL if mtab is useless or unsupported
|
||||
@@ -2874,7 +2884,7 @@ int mnt_context_is_fs_mounted(struct libmnt_context *cxt,
|
||||
struct libmnt_fs *fs, int *mounted)
|
||||
{
|
||||
struct libmnt_table *mtab, *orig;
|
||||
- int rc;
|
||||
+ int rc = 0;
|
||||
struct libmnt_ns *ns_old;
|
||||
|
||||
if (!cxt || !fs || !mounted)
|
||||
@@ -2893,18 +2903,17 @@ int mnt_context_is_fs_mounted(struct libmnt_context *cxt,
|
||||
cxt->mtab = NULL;
|
||||
}
|
||||
*mounted = 0;
|
||||
- return 0; /* /proc not mounted */
|
||||
- }
|
||||
+ rc = 0; /* /proc not mounted */
|
||||
|
||||
- if (rc)
|
||||
- return rc;
|
||||
-
|
||||
- *mounted = __mnt_table_is_fs_mounted(mtab, fs,
|
||||
+ } else if (rc == 0) {
|
||||
+ *mounted = __mnt_table_is_fs_mounted(mtab, fs,
|
||||
mnt_context_get_target_prefix(cxt));
|
||||
|
||||
+ }
|
||||
+
|
||||
if (!mnt_context_switch_ns(cxt, ns_old))
|
||||
return -MNT_ERR_NAMESPACE;
|
||||
- return 0;
|
||||
+ return rc;
|
||||
}
|
||||
|
||||
static int mnt_context_add_child(struct libmnt_context *cxt, pid_t pid)
|
||||
diff --git a/libmount/src/context_mount.c b/libmount/src/context_mount.c
|
||||
index 55ebf79..f9bedd2 100644
|
||||
--- a/libmount/src/context_mount.c
|
||||
+++ b/libmount/src/context_mount.c
|
||||
@@ -1397,8 +1397,15 @@ int mnt_context_next_mount(struct libmnt_context *cxt,
|
||||
|
||||
/* ignore already mounted filesystems */
|
||||
rc = mnt_context_is_fs_mounted(cxt, *fs, &mounted);
|
||||
- if (rc)
|
||||
+ if (rc) {
|
||||
+ if (mnt_table_is_empty(cxt->mtab)) {
|
||||
+ DBG(CXT, ul_debugobj(cxt, "next-mount: no mount table [rc=%d], ignore", rc));
|
||||
+ rc = 0;
|
||||
+ if (ignored)
|
||||
+ *ignored = 1;
|
||||
+ }
|
||||
return rc;
|
||||
+ }
|
||||
if (mounted) {
|
||||
if (ignored)
|
||||
*ignored = 2;
|
||||
diff --git a/sys-utils/mount.8.adoc b/sys-utils/mount.8.adoc
|
||||
index 6e72d48..e8f0c36 100644
|
||||
--- a/sys-utils/mount.8.adoc
|
||||
+++ b/sys-utils/mount.8.adoc
|
||||
@@ -301,6 +301,8 @@ Command-line options available for the *mount* command are:
|
||||
*-a*, *--all*::
|
||||
Mount all filesystems (of the given types) mentioned in _fstab_ (except for those whose line contains the *noauto* keyword). The filesystems are mounted following their order in _fstab_. The *mount* command compares filesystem source, target (and fs root for bind mount or btrfs) to detect already mounted filesystems. The kernel table with already mounted filesystems is cached during *mount --all*. This means that all duplicated _fstab_ entries will be mounted.
|
||||
+
|
||||
+The correct functionality depends on /proc (to detect already mounted filesystems) and on /sys (to evaluate filesystem tags like UUID= or LABEL=). It's strongly recommended to mount /proc and /sys filesystems before *mount -a* is executed, or keep /proc and /sys at the beginning of fstab.
|
||||
++
|
||||
The option *--all* is possible to use for remount operation too. In this case all filters (*-t* and *-O*) are applied to the table of already mounted filesystems.
|
||||
+
|
||||
Since version 2.35 is possible to use the command line option *-o* to alter mount options from _fstab_ (see also *--options-mode*).
|
||||
--
|
||||
2.27.0
|
||||
|
||||
@ -0,0 +1,46 @@
|
||||
From 854abba0dd9b45b4f40a9c934694b3f14052eceb Mon Sep 17 00:00:00 2001
|
||||
From: Hideki EIRAKU <hdk@igel.co.jp>
|
||||
Date: Wed, 25 May 2022 12:23:16 +0900
|
||||
Subject: [PATCH] loopdev: set block_size when using LOOP_CONFIGURE
|
||||
|
||||
LOOP_CONFIGURE ioctl was introduced by commit
|
||||
d5fd456c88aba4fcf77d35fe38024a8d5c814686. Since the previous
|
||||
implementation set partscan flag but did not set block_size with the
|
||||
LOOP_CONFIGURE ioctl, an issue fixed by commit
|
||||
422f0e9f206a145c59a71333dad20d38cbbfc0c4 was reappeared. Setting
|
||||
block_size in the LOOP_CONFIGURE ioctl parameter fixes the issue.
|
||||
|
||||
Signed-off-by: Hideki EIRAKU <hdk@igel.co.jp>
|
||||
---
|
||||
lib/loopdev.c | 8 +++-----
|
||||
1 file changed, 3 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/lib/loopdev.c b/lib/loopdev.c
|
||||
index d9ea1d4..0afe300 100644
|
||||
--- a/lib/loopdev.c
|
||||
+++ b/lib/loopdev.c
|
||||
@@ -1357,6 +1357,9 @@ int loopcxt_setup_device(struct loopdev_cxt *lc)
|
||||
* -- since Linux v5.8-rc1, commit 3448914e8cc550ba792d4ccc74471d1ca4293aae
|
||||
*/
|
||||
lc->config.fd = file_fd;
|
||||
+ if (lc->blocksize > 0)
|
||||
+ lc->config.block_size = lc->blocksize;
|
||||
+
|
||||
if (ioctl(dev_fd, LOOP_CONFIGURE, &lc->config) < 0) {
|
||||
rc = -errno;
|
||||
errsv = errno;
|
||||
@@ -1366,11 +1369,6 @@ int loopcxt_setup_device(struct loopdev_cxt *lc)
|
||||
}
|
||||
fallback = 1;
|
||||
} else {
|
||||
- if (lc->blocksize > 0
|
||||
- && (rc = loopcxt_ioctl_blocksize(lc, lc->blocksize)) < 0) {
|
||||
- errsv = -rc;
|
||||
- goto err;
|
||||
- }
|
||||
DBG(SETUP, ul_debugobj(lc, "LOOP_CONFIGURE: OK"));
|
||||
}
|
||||
|
||||
--
|
||||
2.27.0
|
||||
|
||||
28
backport-lslocks-fix-maj-min-scanf.patch
Normal file
28
backport-lslocks-fix-maj-min-scanf.patch
Normal file
@ -0,0 +1,28 @@
|
||||
From 9b725af7028163bd29d39da3b910dffc903107ee Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Mon, 28 Mar 2022 11:39:27 +0200
|
||||
Subject: [PATCH] lslocks: fix maj:min scanf
|
||||
|
||||
Fixes: https://github.com/util-linux/util-linux/issues/1633
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
---
|
||||
misc-utils/lslocks.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/misc-utils/lslocks.c b/misc-utils/lslocks.c
|
||||
index 941ef7f..6427318 100644
|
||||
--- a/misc-utils/lslocks.c
|
||||
+++ b/misc-utils/lslocks.c
|
||||
@@ -224,7 +224,8 @@ static ino_t get_dev_inode(char *str, dev_t *dev)
|
||||
unsigned int maj = 0, min = 0;
|
||||
ino_t inum = 0;
|
||||
|
||||
- sscanf(str, "%02x:%02x:%ju", &maj, &min, &inum);
|
||||
+ if (sscanf(str, "%x:%x:%ju", &maj, &min, &inum) != 3)
|
||||
+ errx(EXIT_FAILURE, _("failed to parse '%s'"), str);
|
||||
|
||||
*dev = (dev_t) makedev(maj, min);
|
||||
return inum;
|
||||
--
|
||||
2.27.0
|
||||
|
||||
33
backport-lslogins-fix-free-invalid-pointer.patch
Normal file
33
backport-lslogins-fix-free-invalid-pointer.patch
Normal file
@ -0,0 +1,33 @@
|
||||
From 890d4d3f236e2d28db35ea9bc9dc3e5e35db975c Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Tue, 7 Jun 2022 09:46:54 +0200
|
||||
Subject: [PATCH] lslogins: fix free(): invalid pointer
|
||||
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
---
|
||||
login-utils/lslogins.c | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/login-utils/lslogins.c b/login-utils/lslogins.c
|
||||
index 3646883e0e..3cb30b74e2 100644
|
||||
--- a/login-utils/lslogins.c
|
||||
+++ b/login-utils/lslogins.c
|
||||
@@ -490,7 +490,7 @@ static int parse_utmpx(const char *path, size_t *nrecords, struct utmpx **record
|
||||
|
||||
/* optimize allocation according to file size, the realloc() below is
|
||||
* just fallback only */
|
||||
- if (stat(path, &st) == 0 && (size_t) st.st_size > sizeof(struct utmpx)) {
|
||||
+ if (stat(path, &st) == 0 && (size_t) st.st_size >= sizeof(struct utmpx)) {
|
||||
imax = st.st_size / sizeof(struct utmpx);
|
||||
ary = xmalloc(imax * sizeof(struct utmpx));
|
||||
}
|
||||
@@ -1013,6 +1013,9 @@ static void free_ctl(struct lslogins_control *ctl)
|
||||
{
|
||||
size_t n = 0;
|
||||
|
||||
+ if (!ctl)
|
||||
+ return;
|
||||
+
|
||||
free(ctl->wtmp);
|
||||
free(ctl->btmp);
|
||||
|
||||
34
backport-script-fix-passing-args-to-execlp.patch
Normal file
34
backport-script-fix-passing-args-to-execlp.patch
Normal file
@ -0,0 +1,34 @@
|
||||
From 521eb0571eef9352c99d8e401fc8d73d626014cf Mon Sep 17 00:00:00 2001
|
||||
From: Jakub Wilk <jwilk@jwilk.net>
|
||||
Date: Tue, 1 Mar 2022 17:15:45 +0100
|
||||
Subject: [PATCH] script: fix passing args to execlp()
|
||||
|
||||
Fixes:
|
||||
|
||||
$ SHELL=bash script -q -c 'echo Hello world'
|
||||
-c: echo Hello world: No such file or directory
|
||||
|
||||
Signed-off-by: Jakub Wilk <jwilk@jwilk.net>
|
||||
---
|
||||
term-utils/script.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/term-utils/script.c b/term-utils/script.c
|
||||
index c8b55c8..89bd0ed 100644
|
||||
--- a/term-utils/script.c
|
||||
+++ b/term-utils/script.c
|
||||
@@ -975,9 +975,9 @@ int main(int argc, char **argv)
|
||||
execl(shell, shname, "-i", (char *)NULL);
|
||||
} else {
|
||||
if (command)
|
||||
- execlp(shname, "-c", command, (char *)NULL);
|
||||
+ execlp(shname, shname, "-c", command, (char *)NULL);
|
||||
else
|
||||
- execlp(shname, "-i", (char *)NULL);
|
||||
+ execlp(shname, shname, "-i", (char *)NULL);
|
||||
}
|
||||
|
||||
err(EXIT_FAILURE, "failed to execute %s", shell);
|
||||
--
|
||||
2.27.0
|
||||
|
||||
26
backport-scriptlive-fix-argv-0-for-execlp.patch
Normal file
26
backport-scriptlive-fix-argv-0-for-execlp.patch
Normal file
@ -0,0 +1,26 @@
|
||||
From 65856a0deb7200b78f858ba7dc66077f3469e924 Mon Sep 17 00:00:00 2001
|
||||
From: Karel Zak <kzak@redhat.com>
|
||||
Date: Wed, 2 Mar 2022 10:00:46 +0100
|
||||
Subject: [PATCH] scriptlive: fix argv[0] for execlp()
|
||||
|
||||
Signed-off-by: Karel Zak <kzak@redhat.com>
|
||||
---
|
||||
term-utils/scriptlive.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/term-utils/scriptlive.c b/term-utils/scriptlive.c
|
||||
index 37f092c1ff..d81712d36f 100644
|
||||
--- a/term-utils/scriptlive.c
|
||||
+++ b/term-utils/scriptlive.c
|
||||
@@ -321,9 +321,9 @@ main(int argc, char *argv[])
|
||||
execl(shell, shname, "-i", (char *)NULL);
|
||||
} else {
|
||||
if (command)
|
||||
- execlp(shname, "-c", command, (char *)NULL);
|
||||
+ execlp(shname, shname, "-c", command, (char *)NULL);
|
||||
else
|
||||
- execlp(shname, "-i", (char *)NULL);
|
||||
+ execlp(shname, shname, "-i", (char *)NULL);
|
||||
}
|
||||
err(EXIT_FAILURE, "failed to execute %s", shell);
|
||||
break;
|
||||
@ -0,0 +1,45 @@
|
||||
From 9b59641bcec3df9c451eea4c7057751a153a3fcb Mon Sep 17 00:00:00 2001
|
||||
From: Portisch <hugo.portisch@yahoo.de>
|
||||
Date: Mon, 8 Nov 2021 12:31:39 +0100
|
||||
Subject: [PATCH] sysfs: fallback for partitions not including parent name
|
||||
|
||||
---
|
||||
lib/sysfs.c | 12 +++++++-----
|
||||
1 file changed, 7 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/lib/sysfs.c b/lib/sysfs.c
|
||||
index bb71833193..191d870f66 100644
|
||||
--- a/lib/sysfs.c
|
||||
+++ b/lib/sysfs.c
|
||||
@@ -210,9 +210,10 @@ int sysfs_blkdev_is_partition_dirent(DIR *dir, struct dirent *d, const char *par
|
||||
d->d_type != DT_UNKNOWN)
|
||||
return 0;
|
||||
#endif
|
||||
+ size_t len = 0;
|
||||
+
|
||||
if (parent_name) {
|
||||
const char *p = parent_name;
|
||||
- size_t len;
|
||||
|
||||
/* /dev/sda --> "sda" */
|
||||
if (*parent_name == '/') {
|
||||
@@ -223,14 +224,15 @@ int sysfs_blkdev_is_partition_dirent(DIR *dir, struct dirent *d, const char *par
|
||||
}
|
||||
|
||||
len = strlen(p);
|
||||
- if (strlen(d->d_name) <= len)
|
||||
- return 0;
|
||||
+ if ((strlen(d->d_name) <= len) || (strncmp(p, d->d_name, len) != 0))
|
||||
+ len = 0;
|
||||
+ }
|
||||
|
||||
+ if (len > 0) {
|
||||
/* partitions subdir name is
|
||||
* "<parent>[:digit:]" or "<parent>p[:digit:]"
|
||||
*/
|
||||
- return strncmp(p, d->d_name, len) == 0 &&
|
||||
- ((*(d->d_name + len) == 'p' && isdigit(*(d->d_name + len + 1)))
|
||||
+ return ((*(d->d_name + len) == 'p' && isdigit(*(d->d_name + len + 1)))
|
||||
|| isdigit(*(d->d_name + len)));
|
||||
}
|
||||
|
||||
147
util-linux.spec
147
util-linux.spec
@ -3,7 +3,7 @@
|
||||
|
||||
Name: util-linux
|
||||
Version: 2.37.2
|
||||
Release: 17
|
||||
Release: 18
|
||||
Summary: A random collection of Linux utilities
|
||||
License: GPLv2 and GPLv2+ and LGPLv2+ and BSD with advertising and Public Domain
|
||||
URL: https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git
|
||||
@ -25,54 +25,74 @@ Patch6003: realloc-buffer-when-header-size-changed.patch
|
||||
Patch6004: fix-size-use-for-stdin.patch
|
||||
Patch6005: segmentation-fault-on-invalid-unicode-input-passed-to-s-option.patch
|
||||
Patch6006: backport-fix-by-ignoring-EINVAL-on-remount-of-proc.patch
|
||||
Patch6007: backport-su-bash-completion-offer-usernames-rather-than-files.patch
|
||||
Patch6008: backport-Fix-memory-leaks-in-the-chcpu.patch
|
||||
Patch6009: backport-logger-fix-prio-prefix-doesn-t-use-priority-default.patch
|
||||
Patch6010: backport-vipw-flush-stdout-before-getting-answer.patch
|
||||
Patch6011: backport-login-Restore-tty-size-after-calling-vhangup.patch
|
||||
Patch6012: backport-Forward-value-of-sector_size-instead-of-its-address.patch
|
||||
Patch6013: backport-libfdisk-dereference-of-possibly-NULL-gcc-analyzer.patch
|
||||
Patch6014: backport-libfdisk-check-calloc-return-gcc-analyzer.patch
|
||||
Patch6015: backport-mcookie-fix-infinite-loop-when-use-f.patch
|
||||
Patch6016: backport-sfdisk-write-empty-label-also-when-only-ignored-part.patch
|
||||
Patch6017: backport-fstat-dir-itself.patch
|
||||
Patch6018: backport-libblkid-src-topology-dm-close-redundant-write-file-.patch
|
||||
Patch6019: backport-libblkid-topology-init-variables-for-DM.patch
|
||||
Patch6020: backport-sfdisk-fix-typo-in-move-data-when-check-partition-size.patch
|
||||
Patch6021: backport-losetup-fix-memory-leak-asan.patch
|
||||
Patch6022: backport-partx-remove-memory-leak-to-make-scanners-happy-coverity-scan.patch
|
||||
Patch6023: backport-lib-path-make-ul_path_read_buffer-more-robust-coverity-scan.patch
|
||||
Patch6024: backport-libmount-fix-possible-memory-leak-in-mnt_optstr_fix_secontext-coverity-scan.patch
|
||||
Patch6025: backport-libblkid-probe-fix-size-and-offset-overflows-fuzzing.patch
|
||||
Patch6026: backport-lslogins-improve-prefixes-interpretation.patch
|
||||
Patch6027: backport-lsns-fix-the-memory-leak.patch
|
||||
Patch6028: backport-libblkid-check-fsync-return-code.patch
|
||||
Patch6029: backport-libblkid-mac-make-sure-block-size-is-large-enough-fuzzing.patch
|
||||
Patch6030: backport-libblkid-bsd-fix-buffer-pointer-use-fuzzing.patch
|
||||
Patch6031: backport-libblkid-hfs-fix-label-use-fuzzing.patch
|
||||
Patch6032: backport-Maybe-there-is-a-little-mistake-in-do_taskset-functi.patch
|
||||
Patch6033: backport-lsblk-fix-endless-loop-if-device-specified-more-than-once.patch
|
||||
Patch6034: backport-libblkid-avoid-buffer-overflow-in-ocfs-superblock-parsing.patch
|
||||
Patch6035: backport-fsck-Processes-may-kill-other-processes.patch
|
||||
Patch6036: backport-fdisk-fix-output-option-parsing.patch
|
||||
Patch6037: backport-libblkid-exfat-fix-divide-by-zero-coverity-scan.patch
|
||||
Patch6038: backport-llib-pty-session-split-PTY-and-signalfd-setup.patch
|
||||
Patch6039: backport-script-fix-use-of-utempter.patch
|
||||
Patch6040: backport-logger-always-update-header-when-read-from-stdin.patch
|
||||
Patch6041: backport-libblkid-use-checksum-for-jmicron.patch
|
||||
Patch6042: backport-libblkid-cleanup-indentation.patch
|
||||
Patch6043: backport-libblkid-fix-jmicron-checksum-and-LE-to-CPU.patch
|
||||
Patch6044: backport-libblkid-fix-misaligned-address-in-probe_exfat.patch
|
||||
Patch6045: backport-ldattach-fix-intro-command-and-pause.patch
|
||||
Patch6046: backport-iso9660.h-use-more-correct-function-types.patch
|
||||
Patch6047: backport-iso9660.h-avoid-undefined-signed-integer-shift.patch
|
||||
Patch6048: backport-ipc_msg_get_limits-always-initialize-memory.patch
|
||||
Patch6049: backport-wdctl-mark-flags-field-as-unsigned-long.patch
|
||||
Patch6050: backport-login-never-send-signals-to-init.patch
|
||||
Patch6051: backport-mkswap-do-not-use-uninitialized-stack-value.patch
|
||||
Patch6052: backport-lib-pager-fix-signal-safety-issues.patch
|
||||
Patch6053: backport-libblkid-nvidia_raid-verify-superblock-size.patch
|
||||
Patch6054: backport-libblkid-nvidia_raid-validate-checksum.patch
|
||||
Patch6007: backport-flush-stdout-before-reading-stdin-and-fix-uninitialized-variable.patch
|
||||
Patch6008: backport-fflush-stdout-before-reading-from-stdin.patch
|
||||
Patch6009: backport-CVE-2022-0563.patch
|
||||
Patch6010: backport-su-bash-completion-offer-usernames-rather-than-files.patch
|
||||
Patch6011: backport-Fix-memory-leaks-in-the-chcpu.patch
|
||||
Patch6012: backport-logger-fix-prio-prefix-doesn-t-use-priority-default.patch
|
||||
Patch6013: backport-vipw-flush-stdout-before-getting-answer.patch
|
||||
Patch6014: backport-login-Restore-tty-size-after-calling-vhangup.patch
|
||||
Patch6015: backport-Forward-value-of-sector_size-instead-of-its-address.patch
|
||||
Patch6016: backport-libfdisk-dereference-of-possibly-NULL-gcc-analyzer.patch
|
||||
Patch6017: backport-libfdisk-check-calloc-return-gcc-analyzer.patch
|
||||
Patch6018: backport-mcookie-fix-infinite-loop-when-use-f.patch
|
||||
Patch6019: backport-sfdisk-write-empty-label-also-when-only-ignored-part.patch
|
||||
Patch6020: backport-fstat-dir-itself.patch
|
||||
Patch6021: backport-sfdisk-fix-typo-in-move-data-when-check-partition-size.patch
|
||||
Patch6022: backport-sysfs-fallback-for-partitions-not-including-parent-name.patch
|
||||
Patch6023: backport-libmount-all-continue-although-proc-is-not-mounted.patch
|
||||
Patch6024: backport-libblkid-don-t-mark-cache-as-probed-if-sys-not-available.patch
|
||||
Patch6025: backport-lib-path-make-path-use-more-robust-coverity-scan.patch
|
||||
Patch6026: backport-Fix-integer-overflow-for-alpha-like-linux.patch
|
||||
Patch6027: backport-last-don-t-assume-zero-terminate-strings.patch
|
||||
Patch6028: backport-script-fix-passing-args-to-execlp.patch
|
||||
Patch6029: backport-scriptlive-fix-argv-0-for-execlp.patch
|
||||
Patch6030: backport-losetup-fix-memory-leak-asan.patch
|
||||
Patch6031: backport-partx-remove-memory-leak-to-make-scanners-happy-coverity-scan.patch
|
||||
Patch6032: backport-lib-path-make-ul_path_read_buffer-more-robust-coverity-scan.patch
|
||||
Patch6033: backport-libblkid-make-blkid_free_probe-more-robust.patch
|
||||
Patch6034: backport-libmount-fix-possible-memory-leak-in-mnt_optstr_fix_secontext-coverity-scan.patch
|
||||
Patch6035: backport-lslocks-fix-maj-min-scanf.patch
|
||||
Patch6036: backport-column-don-t-require-column-name-for-JSON.patch
|
||||
Patch6037: backport-libblkid-check-fsync-return-code.patch
|
||||
Patch6038: backport-lib-strutils-improve-strtoul_or_err-for-negative-numbers.patch
|
||||
Patch6039: backport-dmesg-fix-since-and-until.patch
|
||||
Patch6040: backport-lib-allow-safe_getenv-to-work-for-non-root-users.patch
|
||||
Patch6041: backport-Maybe-there-is-a-little-mistake-in-do_taskset-functi.patch
|
||||
Patch6042: backport-loopdev-set-block_size-when-using-LOOP_CONFIGURE.patch
|
||||
Patch6043: backport-libblkid-probe-fix-size-and-offset-overflows-fuzzing.patch
|
||||
Patch6044: backport-libblkid-bsd-fix-buffer-pointer-use-fuzzing.patch
|
||||
Patch6045: backport-libblkid-mac-make-sure-block-size-is-large-enough-fuzzing.patch
|
||||
Patch6046: backport-libblkid-hfs-fix-label-use-fuzzing.patch
|
||||
Patch6047: backport-libblkid-hfs-fix-make-sure-buffer-is-large-enough.patch
|
||||
Patch6048: backport-lslogins-fix-free-invalid-pointer.patch
|
||||
Patch6049: backport-lsns-fix-the-memory-leak.patch
|
||||
Patch6050: backport-libblkid-src-topology-dm-close-redundant-write-file-.patch
|
||||
Patch6051: backport-libblkid-topology-init-variables-for-DM.patch
|
||||
Patch6052: backport-lslogins-improve-prefixes-interpretation.patch
|
||||
Patch6053: backport-lsblk-fix-endless-loop-if-device-specified-more-than-once.patch
|
||||
Patch6054: backport-libblkid-avoid-buffer-overflow-in-ocfs-superblock-parsing.patch
|
||||
Patch6055: backport-fsck-Processes-may-kill-other-processes.patch
|
||||
Patch6056: backport-fdisk-fix-output-option-parsing.patch
|
||||
Patch6057: backport-libblkid-exfat-fix-divide-by-zero-coverity-scan.patch
|
||||
Patch6058: backport-llib-pty-session-split-PTY-and-signalfd-setup.patch
|
||||
Patch6059: backport-script-fix-use-of-utempter.patch
|
||||
Patch6060: backport-logger-always-update-header-when-read-from-stdin.patch
|
||||
Patch6061: backport-libblkid-use-checksum-for-jmicron.patch
|
||||
Patch6062: backport-libblkid-cleanup-indentation.patch
|
||||
Patch6063: backport-libblkid-fix-jmicron-checksum-and-LE-to-CPU.patch
|
||||
Patch6064: backport-libblkid-fix-misaligned-address-in-probe_exfat.patch
|
||||
Patch6065: backport-ldattach-fix-intro-command-and-pause.patch
|
||||
Patch6066: backport-iso9660.h-use-more-correct-function-types.patch
|
||||
Patch6067: backport-iso9660.h-avoid-undefined-signed-integer-shift.patch
|
||||
Patch6068: backport-ipc_msg_get_limits-always-initialize-memory.patch
|
||||
Patch6069: backport-wdctl-mark-flags-field-as-unsigned-long.patch
|
||||
Patch6070: backport-login-never-send-signals-to-init.patch
|
||||
Patch6071: backport-mkswap-do-not-use-uninitialized-stack-value.patch
|
||||
Patch6072: backport-lib-pager-fix-signal-safety-issues.patch
|
||||
Patch6073: backport-libblkid-nvidia_raid-verify-superblock-size.patch
|
||||
Patch6074: backport-libblkid-nvidia_raid-validate-checksum.patch
|
||||
|
||||
Patch9000: Add-check-to-resolve-uname26-version-test-failed.patch
|
||||
Patch9001: SKIPPED-no-root-permissions-test.patch
|
||||
@ -81,7 +101,7 @@ Patch9002: util-linux-Add-sw64-architecture.patch
|
||||
%endif
|
||||
|
||||
BuildRequires: audit-libs-devel >= 1.0.6 gettext-devel libselinux-devel ncurses-devel pam-devel zlib-devel popt-devel
|
||||
BuildRequires: libutempter-devel systemd-devel systemd libuser-devel libcap-ng-devel python3-devel gcc
|
||||
BuildRequires: libutempter-devel systemd-devel systemd libuser-devel libcap-ng-devel python3-devel gcc autoconf automake
|
||||
|
||||
Requires(post): coreutils
|
||||
Requires: pam >= 1.1.3-7, /etc/pam.d/system-auth audit-libs >= 1.0.6
|
||||
@ -202,6 +222,7 @@ This package contains some doc and man help files for %{name}.
|
||||
%build
|
||||
%define _build_arg0__ CFLAGS="-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 $RPM_OPT_FLAGS" SUID_CFLAGS="-fpie"
|
||||
%define _build_arg1__ SUID_LDFLAGS="-pie -Wl,-z,relro -Wl,-z,now" DAEMON_CFLAGS="$SUID_CFLAGS" DAEMON_LDFLAGS="$SUID_LDFLAGS"
|
||||
autoreconf
|
||||
|
||||
unset LINGUAS || :
|
||||
# del support enable-raw https://github.com/torvalds/linux/commit/603e4922f1c81fc2ed3a87b4f91a8d3aafc7e093
|
||||
@ -443,6 +464,32 @@ fi
|
||||
%{_mandir}/man8/{swapoff.8*,swapon.8*,switch_root.8*,umount.8*,wdctl.8.gz,wipefs.8*,zramctl.8*}
|
||||
|
||||
%changelog
|
||||
* Fri May 12 2023 zhangyao <zhangyao108@huawei.com> - 2.37.2-18
|
||||
- Type:bugfix
|
||||
- CVE:NA
|
||||
- SUG:NA
|
||||
- DESC:Sync community patches
|
||||
[add]backport-CVE-2022-0563.patch
|
||||
backport-Fix-integer-overflow-for-alpha-like-linux.patch
|
||||
backport-column-don-t-require-column-name-for-JSON.patch
|
||||
backport-dmesg-fix-since-and-until.patch
|
||||
backport-fflush-stdout-before-reading-from-stdin.patch
|
||||
backport-flush-stdout-before-reading-stdin-and-fix-uninitialized-variable.patch
|
||||
backport-last-don-t-assume-zero-terminate-strings.patch
|
||||
backport-lib-allow-safe_getenv-to-work-for-non-root-users.patch
|
||||
backport-lib-path-make-path-use-more-robust-coverity-scan.patch
|
||||
backport-lib-strutils-improve-strtoul_or_err-for-negative-numbers.patch
|
||||
backport-libblkid-don-t-mark-cache-as-probed-if-sys-not-available.patch
|
||||
backport-libblkid-hfs-fix-make-sure-buffer-is-large-enough.patch
|
||||
backport-libblkid-make-blkid_free_probe-more-robust.patch
|
||||
backport-libmount-all-continue-although-proc-is-not-mounted.patch
|
||||
backport-loopdev-set-block_size-when-using-LOOP_CONFIGURE.patch
|
||||
backport-lslocks-fix-maj-min-scanf.patch
|
||||
backport-lslogins-fix-free-invalid-pointer.patch
|
||||
backport-script-fix-passing-args-to-execlp.patch
|
||||
backport-scriptlive-fix-argv-0-for-execlp.patch
|
||||
backport-sysfs-fallback-for-partitions-not-including-parent-name.patch
|
||||
|
||||
* Thu Mar 16 2023 zhangyao <zhangyao108@huawei.com> - 2.37.2-17
|
||||
- Type:bugfix
|
||||
- CVE:NA
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user