!84 [sync] PR-82: coreutils:backport some patches from upstream
From: @openeuler-sync-bot Reviewed-by: @overweight Signed-off-by: @overweight
This commit is contained in:
commit
e89bc37fc9
@ -0,0 +1,89 @@
|
|||||||
|
From d6125af095c9553f38cba0696f15158f5abe4ecc Mon Sep 17 00:00:00 2001
|
||||||
|
From: Kamil Dudka <kdudka@redhat.com>
|
||||||
|
Date: Wed, 30 Jun 2021 17:53:22 +0200
|
||||||
|
Subject: [PATCH] df: fix duplicated remote entries due to bind mounts
|
||||||
|
|
||||||
|
As originally reported in <https://bugzilla.redhat.com/1962515>,
|
||||||
|
df invoked without -a printed duplicated entries for NFS mounts
|
||||||
|
of bind mounts. This is a regression from commit v8.25-54-g1c17f61ef99,
|
||||||
|
which introduced the use of a hash table.
|
||||||
|
|
||||||
|
The proposed patch makes sure that the devlist entry seen the last time
|
||||||
|
is used for comparison when eliminating duplicated mount entries. This
|
||||||
|
way it worked before introducing the hash table.
|
||||||
|
|
||||||
|
Patch co-authored by Roberto Bergantinos.
|
||||||
|
|
||||||
|
* src/ls.c (struct devlist): Introduce the seen_last pointer.
|
||||||
|
(devlist_for_dev): Return the devlist entry seen the last time if found.
|
||||||
|
(filter_mount_list): Remember the devlist entry seen the last time for
|
||||||
|
each hashed item.
|
||||||
|
* NEWS: Mention the bug fix.
|
||||||
|
Fixes https://bugs.gnu.org/49298
|
||||||
|
|
||||||
|
Reference: https://github.com/coreutils/coreutils/commit/d6125af095c9553f38cba0696f15158f5abe4ecc
|
||||||
|
Conflict: NEWS Context adaptation
|
||||||
|
|
||||||
|
---
|
||||||
|
NEWS | 3 +++
|
||||||
|
src/df.c | 15 +++++++++++++--
|
||||||
|
2 files changed, 16 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/NEWS b/NEWS
|
||||||
|
index fc8ff16..bae6ced 100644
|
||||||
|
--- a/NEWS
|
||||||
|
+++ b/NEWS
|
||||||
|
@@ -4,6 +4,9 @@ GNU coreutils NEWS -*- outline -*-
|
||||||
|
|
||||||
|
** Bug fixes
|
||||||
|
|
||||||
|
+ df no longer outputs duplicate remote mounts in the presence of bind mounts.
|
||||||
|
+ [bug introduced in coreutils-8.26]
|
||||||
|
+
|
||||||
|
'sort -g' no longer infloops when given multiple NaNs on platforms
|
||||||
|
like x86-64 where 'long double' has padding bits in memory.
|
||||||
|
Although the fix alters sort -g's NaN ordering, that ordering has
|
||||||
|
diff --git a/src/df.c b/src/df.c
|
||||||
|
index 7e01839..3e9247f 100644
|
||||||
|
--- a/src/df.c
|
||||||
|
+++ b/src/df.c
|
||||||
|
@@ -54,6 +54,7 @@ struct devlist
|
||||||
|
dev_t dev_num;
|
||||||
|
struct mount_entry *me;
|
||||||
|
struct devlist *next;
|
||||||
|
+ struct devlist *seen_last; /* valid for hashed devlist entries only */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Filled with device numbers of examined file systems to avoid
|
||||||
|
@@ -689,7 +690,13 @@ devlist_for_dev (dev_t dev)
|
||||||
|
return NULL;
|
||||||
|
struct devlist dev_entry;
|
||||||
|
dev_entry.dev_num = dev;
|
||||||
|
- return hash_lookup (devlist_table, &dev_entry);
|
||||||
|
+
|
||||||
|
+ struct devlist *found = hash_lookup (devlist_table, &dev_entry);
|
||||||
|
+ if (found == NULL)
|
||||||
|
+ return NULL;
|
||||||
|
+
|
||||||
|
+ /* Return the last devlist entry we have seen with this dev_num */
|
||||||
|
+ return found->seen_last;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
@@ -807,8 +814,12 @@ filter_mount_list (bool devices_only)
|
||||||
|
devlist->dev_num = buf.st_dev;
|
||||||
|
devlist->next = device_list;
|
||||||
|
device_list = devlist;
|
||||||
|
- if (hash_insert (devlist_table, devlist) == NULL)
|
||||||
|
+
|
||||||
|
+ struct devlist *hash_entry = hash_insert (devlist_table, devlist);
|
||||||
|
+ if (hash_entry == NULL)
|
||||||
|
xalloc_die ();
|
||||||
|
+ /* Ensure lookups use this latest devlist. */
|
||||||
|
+ hash_entry->seen_last = devlist;
|
||||||
|
|
||||||
|
me = me->me_next;
|
||||||
|
}
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
||||||
57
backport-df-fix-memory-leak.patch
Normal file
57
backport-df-fix-memory-leak.patch
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
From fb7579768d688a300c4ac76451e1fc7cad59e3e8 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Paul Eggert <eggert@cs.ucla.edu>
|
||||||
|
Date: Mon, 31 Jan 2022 19:52:43 -0800
|
||||||
|
Subject: [PATCH] df: fix memory leak
|
||||||
|
|
||||||
|
* src/df.c (devlist_free): Remove.
|
||||||
|
(filter_mount_list): Free all of devlist, instead of merely
|
||||||
|
the entries in devlist_table.
|
||||||
|
|
||||||
|
Reference: https://github.com/coreutils/coreutils/commit/fb7579768d688a300c4ac76451e1fc7cad59e3e8
|
||||||
|
Conflict: NA
|
||||||
|
---
|
||||||
|
src/df.c | 14 ++++----------
|
||||||
|
1 file changed, 4 insertions(+), 10 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/df.c b/src/df.c
|
||||||
|
index 7d3207807..4b2cfb77a 100644
|
||||||
|
--- a/src/df.c
|
||||||
|
+++ b/src/df.c
|
||||||
|
@@ -710,12 +710,6 @@ devlist_for_dev (dev_t dev)
|
||||||
|
return found->seen_last;
|
||||||
|
}
|
||||||
|
|
||||||
|
-static void
|
||||||
|
-devlist_free (void *p)
|
||||||
|
-{
|
||||||
|
- free (p);
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
/* Filter mount list by skipping duplicate entries.
|
||||||
|
In the case of duplicates - based on the device number - the mount entry
|
||||||
|
with a '/' in its me_devname (i.e., not pseudo name like tmpfs) wins.
|
||||||
|
@@ -736,9 +730,7 @@ filter_mount_list (bool devices_only)
|
||||||
|
mount_list_size++;
|
||||||
|
|
||||||
|
devlist_table = hash_initialize (mount_list_size, NULL,
|
||||||
|
- devlist_hash,
|
||||||
|
- devlist_compare,
|
||||||
|
- devlist_free);
|
||||||
|
+ devlist_hash, devlist_compare, NULL);
|
||||||
|
if (devlist_table == NULL)
|
||||||
|
xalloc_die ();
|
||||||
|
|
||||||
|
@@ -845,7 +837,9 @@ filter_mount_list (bool devices_only)
|
||||||
|
me = device_list->me;
|
||||||
|
me->me_next = mount_list;
|
||||||
|
mount_list = me;
|
||||||
|
- device_list = device_list->next;
|
||||||
|
+ struct devlist *next = device_list->next;
|
||||||
|
+ free (device_list);
|
||||||
|
+ device_list = next;
|
||||||
|
}
|
||||||
|
|
||||||
|
hash_free (devlist_table);
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
||||||
54
backport-ls-avoid-triggering-automounts.patch
Normal file
54
backport-ls-avoid-triggering-automounts.patch
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
From 85c975df2c25bd799370b04bb294e568e001102f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Rohan Sable <rsable@redhat.com>
|
||||||
|
Date: Mon, 7 Mar 2022 14:14:13 +0000
|
||||||
|
Subject: [PATCH] ls: avoid triggering automounts
|
||||||
|
|
||||||
|
statx() has different defaults wrt automounting
|
||||||
|
compared to stat() or lstat(), so explicitly
|
||||||
|
set the AT_NO_AUTOMOUNT flag to suppress that behavior,
|
||||||
|
and avoid unintended operations or potential errors.
|
||||||
|
|
||||||
|
* src/ls.c (do_statx): Pass AT_NO_AUTOMOUNT to avoid this behavior.
|
||||||
|
* NEWS: Mention the change in behavior.
|
||||||
|
Fixes https://bugs.gnu.org/54286
|
||||||
|
|
||||||
|
Signed-off-by: Rohan Sable <rsable@redhat.com>
|
||||||
|
|
||||||
|
Reference: https://github.com/coreutils/coreutils/commit/85c975df2c25bd799370b04bb294e568e001102f
|
||||||
|
Conflict: NEWS Context adaptation
|
||||||
|
|
||||||
|
---
|
||||||
|
NEWS | 3 +++
|
||||||
|
src/ls.c | 2 +-
|
||||||
|
2 files changed, 4 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/NEWS b/NEWS
|
||||||
|
index bae6ced..76a6986 100644
|
||||||
|
--- a/NEWS
|
||||||
|
+++ b/NEWS
|
||||||
|
@@ -4,6 +4,9 @@ GNU coreutils NEWS -*- outline -*-
|
||||||
|
|
||||||
|
** Bug fixes
|
||||||
|
|
||||||
|
+ ls no longer tries to automount files, reverting to the behavior
|
||||||
|
+ before the statx() call was introduced in coreutils-8.32.
|
||||||
|
+
|
||||||
|
df no longer outputs duplicate remote mounts in the presence of bind mounts.
|
||||||
|
[bug introduced in coreutils-8.26]
|
||||||
|
|
||||||
|
diff --git a/src/ls.c b/src/ls.c
|
||||||
|
index 8eb483d..cd23446 100644
|
||||||
|
--- a/src/ls.c
|
||||||
|
+++ b/src/ls.c
|
||||||
|
@@ -1154,7 +1154,7 @@ do_statx (int fd, const char *name, struct stat *st, int flags,
|
||||||
|
{
|
||||||
|
struct statx stx;
|
||||||
|
bool want_btime = mask & STATX_BTIME;
|
||||||
|
- int ret = statx (fd, name, flags, mask, &stx);
|
||||||
|
+ int ret = statx (fd, name, flags | AT_NO_AUTOMOUNT, mask, &stx);
|
||||||
|
if (ret >= 0)
|
||||||
|
{
|
||||||
|
statx_to_stat (&stx, st);
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
||||||
50
backport-pr-don-t-use-uninitialized-var.patch
Normal file
50
backport-pr-don-t-use-uninitialized-var.patch
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
From 81d58df1647ea79c5161f99d8bd241f0c78df729 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Paul Eggert <eggert@cs.ucla.edu>
|
||||||
|
Date: Tue, 19 Apr 2022 16:13:55 -0700
|
||||||
|
Subject: [PATCH] =?UTF-8?q?pr:=20don=E2=80=99t=20use=20uninitialized=20var?=
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
Found with -flto and --enable-gcc-warnings.
|
||||||
|
* src/pr.c (getoptarg): Fix misuse of xstrtol, which does not
|
||||||
|
necessarily set tmp_long on errror, and does not set errno in any
|
||||||
|
reliable way. The previous code might access uninitialized
|
||||||
|
storage; on typical platforms this merely causes it to possibly
|
||||||
|
print the wrong diagnostic.
|
||||||
|
|
||||||
|
Reference: https://github.com/coreutils/coreutils/commit/81d58df1647ea79c5161f99d8bd241f0c78df729
|
||||||
|
Conflict: NA
|
||||||
|
|
||||||
|
---
|
||||||
|
src/pr.c | 13 ++++++++++---
|
||||||
|
1 file changed, 10 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/pr.c b/src/pr.c
|
||||||
|
index 4c17c0050..a8feba9d8 100644
|
||||||
|
--- a/src/pr.c
|
||||||
|
+++ b/src/pr.c
|
||||||
|
@@ -1173,10 +1173,17 @@ getoptarg (char *arg, char switch_char, char *character, int *number)
|
||||||
|
if (*arg)
|
||||||
|
{
|
||||||
|
long int tmp_long;
|
||||||
|
- if (xstrtol (arg, NULL, 10, &tmp_long, "") != LONGINT_OK
|
||||||
|
- || tmp_long <= 0 || INT_MAX < tmp_long)
|
||||||
|
+ strtol_error e = xstrtol (arg, NULL, 10, &tmp_long, "");
|
||||||
|
+ if (e == LONGINT_OK)
|
||||||
|
{
|
||||||
|
- error (0, INT_MAX < tmp_long ? EOVERFLOW : errno,
|
||||||
|
+ if (tmp_long <= 0)
|
||||||
|
+ e = LONGINT_INVALID;
|
||||||
|
+ else if (INT_MAX < tmp_long)
|
||||||
|
+ e = LONGINT_OVERFLOW;
|
||||||
|
+ }
|
||||||
|
+ if (e != LONGINT_OK)
|
||||||
|
+ {
|
||||||
|
+ error (0, e & LONGINT_OVERFLOW ? EOVERFLOW : 0,
|
||||||
|
_("'-%c' extra characters or invalid number in the argument: %s"),
|
||||||
|
switch_char, quote (arg));
|
||||||
|
usage (EXIT_FAILURE);
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
||||||
79
backport-sort-fix-sort-g-infloop-again.patch
Normal file
79
backport-sort-fix-sort-g-infloop-again.patch
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
From 2f56f5a42033dc6db15d8963e54566f01fa0d61d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Paul Eggert <eggert@cs.ucla.edu>
|
||||||
|
Date: Sun, 1 May 2022 22:46:21 -0700
|
||||||
|
Subject: [PATCH] sort: fix sort -g infloop again
|
||||||
|
|
||||||
|
Problem reported by Giulio Genovese (Bug#55212).
|
||||||
|
* src/sort.c (nan_compare): To compare NaNs, simply printf+strcmp.
|
||||||
|
This avoids the problem of padding bits and unspecified behavior.
|
||||||
|
Args are now long double instead of char *; caller changed.
|
||||||
|
|
||||||
|
Reference:https://github.com/coreutils/coreutils/commit/2f56f5a42033dc6db15d8963e54566f01fa0d61d
|
||||||
|
Conflict: NEWS Context adaptation
|
||||||
|
|
||||||
|
---
|
||||||
|
NEWS | 6 ++++++
|
||||||
|
src/sort.c | 21 ++++++---------------
|
||||||
|
2 files changed, 12 insertions(+), 15 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/NEWS b/NEWS
|
||||||
|
index 3e44c0c..fc8ff16 100644
|
||||||
|
--- a/NEWS
|
||||||
|
+++ b/NEWS
|
||||||
|
@@ -4,6 +4,12 @@ GNU coreutils NEWS -*- outline -*-
|
||||||
|
|
||||||
|
** Bug fixes
|
||||||
|
|
||||||
|
+ 'sort -g' no longer infloops when given multiple NaNs on platforms
|
||||||
|
+ like x86-64 where 'long double' has padding bits in memory.
|
||||||
|
+ Although the fix alters sort -g's NaN ordering, that ordering has
|
||||||
|
+ long been documented to be platform-dependent.
|
||||||
|
+ [bug introduced 1999-05-02 and only partly fixed in coreutils-8.14]
|
||||||
|
+
|
||||||
|
cp now copies /dev/fd/N correctly on platforms like Solaris where
|
||||||
|
it is a character-special file whose minor device number is N.
|
||||||
|
[bug introduced in fileutils-4.1.6]
|
||||||
|
diff --git a/src/sort.c b/src/sort.c
|
||||||
|
index 8e1533e..5b4342f 100644
|
||||||
|
--- a/src/sort.c
|
||||||
|
+++ b/src/sort.c
|
||||||
|
@@ -2360,22 +2360,13 @@ numcompare_mb (const char *a, const char *b)
|
||||||
|
}
|
||||||
|
#endif /* HAV_EMBRTOWC */
|
||||||
|
|
||||||
|
-/* Work around a problem whereby the long double value returned by glibc's
|
||||||
|
- strtold ("NaN", ...) contains uninitialized bits: clear all bytes of
|
||||||
|
- A and B before calling strtold. FIXME: remove this function if
|
||||||
|
- gnulib guarantees that strtold's result is always well defined. */
|
||||||
|
static int
|
||||||
|
-nan_compare (char const *sa, char const *sb)
|
||||||
|
+nan_compare (long double a, long double b)
|
||||||
|
{
|
||||||
|
- long double a;
|
||||||
|
- memset (&a, 0, sizeof a);
|
||||||
|
- a = strtold (sa, NULL);
|
||||||
|
-
|
||||||
|
- long double b;
|
||||||
|
- memset (&b, 0, sizeof b);
|
||||||
|
- b = strtold (sb, NULL);
|
||||||
|
-
|
||||||
|
- return memcmp (&a, &b, sizeof a);
|
||||||
|
+ char buf[2][sizeof "-nan()" + CHAR_BIT * sizeof a];
|
||||||
|
+ snprintf (buf[0], sizeof buf[0], "%Lf", a);
|
||||||
|
+ snprintf (buf[1], sizeof buf[1], "%Lf", b);
|
||||||
|
+ return strcmp (buf[0], buf[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
@@ -2403,7 +2394,7 @@ general_numcompare (char const *sa, char const *sb)
|
||||||
|
: a == b ? 0
|
||||||
|
: b == b ? -1
|
||||||
|
: a == a ? 1
|
||||||
|
- : nan_compare (sa, sb));
|
||||||
|
+ : nan_compare (a, b));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Return an integer in 1..12 of the month name MONTH.
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
||||||
67
backport-stat-only-automount-with-cached-never.patch
Normal file
67
backport-stat-only-automount-with-cached-never.patch
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
From 92cb8427c537f37edd43c5cef1909585201372ab Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?P=C3=A1draig=20Brady?= <P@draigBrady.com>
|
||||||
|
Date: Mon, 7 Mar 2022 23:29:20 +0000
|
||||||
|
Subject: [PATCH] stat: only automount with --cached=never
|
||||||
|
|
||||||
|
Revert to the default behavior before the introduction of statx().
|
||||||
|
|
||||||
|
* src/stat.c (do_stat): Set AT_NO_AUTOMOUNT without --cached=never.
|
||||||
|
* doc/coreutils.texi (stat invocation): Mention the automount
|
||||||
|
behavior with --cached=never.
|
||||||
|
* NEWS: Mention the change in behavior.
|
||||||
|
|
||||||
|
Fixes https://bugs.gnu.org/54287
|
||||||
|
|
||||||
|
Reference: https://github.com/coreutils/coreutils/commit/92cb8427c537f37edd43c5cef1909585201372ab
|
||||||
|
Conflict: NEWS Context adaptation
|
||||||
|
|
||||||
|
---
|
||||||
|
NEWS | 4 ++++
|
||||||
|
doc/coreutils.texi | 1 +
|
||||||
|
src/stat.c | 3 +++
|
||||||
|
3 files changed, 8 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/NEWS b/NEWS
|
||||||
|
index 76a6986..81f5cf5 100644
|
||||||
|
--- a/NEWS
|
||||||
|
+++ b/NEWS
|
||||||
|
@@ -4,6 +4,10 @@ GNU coreutils NEWS -*- outline -*-
|
||||||
|
|
||||||
|
** Bug fixes
|
||||||
|
|
||||||
|
+ stat no longer tries to automount files by default, reverting to the
|
||||||
|
+ behavior before the statx() call was introduced in coreutils-8.32.
|
||||||
|
+ Only `stat --cached=never` will continue to automount files.
|
||||||
|
+
|
||||||
|
ls no longer tries to automount files, reverting to the behavior
|
||||||
|
before the statx() call was introduced in coreutils-8.32.
|
||||||
|
|
||||||
|
diff --git a/doc/coreutils.texi b/doc/coreutils.texi
|
||||||
|
index 467f635..ff8e7a6 100644
|
||||||
|
--- a/doc/coreutils.texi
|
||||||
|
+++ b/doc/coreutils.texi
|
||||||
|
@@ -12382,6 +12382,7 @@ Always read the already cached attributes if available.
|
||||||
|
|
||||||
|
@item never
|
||||||
|
Always sychronize with the latest file system attributes.
|
||||||
|
+This also mounts automounted files.
|
||||||
|
|
||||||
|
@item default
|
||||||
|
Leave the caching behavior to the underlying file system.
|
||||||
|
diff --git a/src/stat.c b/src/stat.c
|
||||||
|
index 5012622..1f1c8e4 100644
|
||||||
|
--- a/src/stat.c
|
||||||
|
+++ b/src/stat.c
|
||||||
|
@@ -1355,6 +1355,9 @@ do_stat (char const *filename, char const *format, char const *format2)
|
||||||
|
else if (force_sync)
|
||||||
|
flags |= AT_STATX_FORCE_SYNC;
|
||||||
|
|
||||||
|
+ if (! force_sync)
|
||||||
|
+ flags |= AT_NO_AUTOMOUNT;
|
||||||
|
+
|
||||||
|
fd = statx (fd, pathname, flags, format_to_mask (format), &stx);
|
||||||
|
if (fd < 0)
|
||||||
|
{
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
||||||
@ -0,0 +1,47 @@
|
|||||||
|
From ddafdae21c574b1dcd5c56e403c82010e7ed3565 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?P=C3=A1draig=20Brady?= <P@draigBrady.com>
|
||||||
|
Date: Mon, 2 May 2022 14:27:34 +0100
|
||||||
|
Subject: [PATCH] tests: sort-NaN-infloop: augment testing for recent fix
|
||||||
|
|
||||||
|
* tests/misc/sort-NaN-infloop.sh: Add test case from
|
||||||
|
https://unix.stackexchange.com/a/700967/37127
|
||||||
|
* src/sort.c: Avoid syntax-check failure.
|
||||||
|
|
||||||
|
Reference: https://github.com/coreutils/coreutils/commit/ddafdae21c574b1dcd5c56e403c82010e7ed3565
|
||||||
|
Conflict: NA
|
||||||
|
|
||||||
|
---
|
||||||
|
src/sort.c | 2 +-
|
||||||
|
tests/misc/sort-NaN-infloop.sh | 3 +++
|
||||||
|
2 files changed, 4 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/src/sort.c b/src/sort.c
|
||||||
|
index b2a465cf5..8af356c66 100644
|
||||||
|
--- a/src/sort.c
|
||||||
|
+++ b/src/sort.c
|
||||||
|
@@ -2006,7 +2006,7 @@ numcompare (char const *a, char const *b)
|
||||||
|
static int
|
||||||
|
nan_compare (long double a, long double b)
|
||||||
|
{
|
||||||
|
- char buf[2][sizeof "-nan()" + CHAR_BIT * sizeof a];
|
||||||
|
+ char buf[2][sizeof "-nan""()" + CHAR_BIT * sizeof a];
|
||||||
|
snprintf (buf[0], sizeof buf[0], "%Lf", a);
|
||||||
|
snprintf (buf[1], sizeof buf[1], "%Lf", b);
|
||||||
|
return strcmp (buf[0], buf[1]);
|
||||||
|
diff --git a/tests/misc/sort-NaN-infloop.sh b/tests/misc/sort-NaN-infloop.sh
|
||||||
|
index 93cf9bd77..cc1c583cd 100755
|
||||||
|
--- a/tests/misc/sort-NaN-infloop.sh
|
||||||
|
+++ b/tests/misc/sort-NaN-infloop.sh
|
||||||
|
@@ -23,6 +23,9 @@ echo nan > F || framework_failure_
|
||||||
|
printf 'nan\nnan\n' > exp || framework_failure_
|
||||||
|
timeout 10 sort -g -m F F > out || fail=1
|
||||||
|
|
||||||
|
+# This was seen to infloop on some systems until coreutils v9.2 (bug 55212)
|
||||||
|
+yes nan | head -n128095 | timeout 60 sort -g > /dev/null || fail=1
|
||||||
|
+
|
||||||
|
compare exp out || fail=1
|
||||||
|
|
||||||
|
Exit $fail
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
||||||
79
backport-touch-fix-aliasing-bug.patch
Normal file
79
backport-touch-fix-aliasing-bug.patch
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
From afffa445b968d2fa4397bcf1e93f3dde28689526 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Paul Eggert <eggert@cs.ucla.edu>
|
||||||
|
Date: Wed, 27 Jul 2022 09:59:38 -0700
|
||||||
|
Subject: [PATCH] touch: fix aliasing bug
|
||||||
|
|
||||||
|
Problem reported by Tim Lange in:
|
||||||
|
https://lists.gnu.org/r/coreutils/2022-07/msg00008.html
|
||||||
|
* src/touch.c (date_relative): Rename from get_reldate,
|
||||||
|
and use a functional style to fix the aliasing bug.
|
||||||
|
|
||||||
|
Reference:https://github.com/coreutils/coreutils/commit/afffa445b968d2fa4397bcf1e93f3dde28689526
|
||||||
|
Conflict:NA
|
||||||
|
|
||||||
|
---
|
||||||
|
src/touch.c | 24 +++++++++++-------------
|
||||||
|
1 file changed, 11 insertions(+), 13 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/touch.c b/src/touch.c
|
||||||
|
index 21c247d0b..d8d232c19 100644
|
||||||
|
--- a/src/touch.c
|
||||||
|
+++ b/src/touch.c
|
||||||
|
@@ -105,15 +105,15 @@ static int const time_masks[] =
|
||||||
|
CH_ATIME, CH_ATIME, CH_ATIME, CH_MTIME, CH_MTIME
|
||||||
|
};
|
||||||
|
|
||||||
|
-/* Store into *RESULT the result of interpreting FLEX_DATE as a date,
|
||||||
|
- relative to NOW. If NOW is null, use the current time. */
|
||||||
|
+/* The interpretation of FLEX_DATE as a date, relative to NOW. */
|
||||||
|
|
||||||
|
-static void
|
||||||
|
-get_reldate (struct timespec *result,
|
||||||
|
- char const *flex_date, struct timespec const *now)
|
||||||
|
+static struct timespec
|
||||||
|
+date_relative (char const *flex_date, struct timespec now)
|
||||||
|
{
|
||||||
|
- if (! parse_datetime (result, flex_date, now))
|
||||||
|
+ struct timespec result;
|
||||||
|
+ if (! parse_datetime (&result, flex_date, &now))
|
||||||
|
die (EXIT_FAILURE, 0, _("invalid date format %s"), quote (flex_date));
|
||||||
|
+ return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Update the time of file FILE according to the options given.
|
||||||
|
@@ -356,19 +356,17 @@ main (int argc, char **argv)
|
||||||
|
if (flex_date)
|
||||||
|
{
|
||||||
|
if (change_times & CH_ATIME)
|
||||||
|
- get_reldate (&newtime[0], flex_date, &newtime[0]);
|
||||||
|
+ newtime[0] = date_relative (flex_date, newtime[0]);
|
||||||
|
if (change_times & CH_MTIME)
|
||||||
|
- get_reldate (&newtime[1], flex_date, &newtime[1]);
|
||||||
|
+ newtime[1] = date_relative (flex_date, newtime[1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (flex_date)
|
||||||
|
{
|
||||||
|
- struct timespec now;
|
||||||
|
- gettime (&now);
|
||||||
|
- get_reldate (&newtime[0], flex_date, &now);
|
||||||
|
- newtime[1] = newtime[0];
|
||||||
|
+ struct timespec now = current_timespec ();
|
||||||
|
+ newtime[1] = newtime[0] = date_relative (flex_date, now);
|
||||||
|
date_set = true;
|
||||||
|
|
||||||
|
/* If neither -a nor -m is specified, treat "-d now" as if
|
||||||
|
@@ -383,7 +381,7 @@ main (int argc, char **argv)
|
||||||
|
struct timespec notnow, notnow1;
|
||||||
|
notnow.tv_sec = now.tv_sec ^ 1;
|
||||||
|
notnow.tv_nsec = now.tv_nsec;
|
||||||
|
- get_reldate (¬now1, flex_date, ¬now);
|
||||||
|
+ notnow1 = date_relative (flex_date, notnow);
|
||||||
|
if (notnow1.tv_sec == notnow.tv_sec
|
||||||
|
&& notnow1.tv_nsec == notnow.tv_nsec)
|
||||||
|
date_set = false;
|
||||||
|
--
|
||||||
|
2.27.0
|
||||||
|
|
||||||
@ -1,6 +1,6 @@
|
|||||||
Name: coreutils
|
Name: coreutils
|
||||||
Version: 8.32
|
Version: 8.32
|
||||||
Release: 4
|
Release: 5
|
||||||
License: GPLv3+
|
License: GPLv3+
|
||||||
Summary: A set of basic GNU tools commonly used in shell scripts
|
Summary: A set of basic GNU tools commonly used in shell scripts
|
||||||
Url: https://www.gnu.org/software/coreutils/
|
Url: https://www.gnu.org/software/coreutils/
|
||||||
@ -29,6 +29,14 @@ Patch11: backport-ls-fix-crash-printing-SELinux-context-for-unstatable.patch
|
|||||||
Patch12: backport-tr-fix-crash-validating-c-with-some-case-char-classe.patch
|
Patch12: backport-tr-fix-crash-validating-c-with-some-case-char-classe.patch
|
||||||
Patch13: backport-timeout-ensure-foreground-k-exits-with-status-137.patch
|
Patch13: backport-timeout-ensure-foreground-k-exits-with-status-137.patch
|
||||||
Patch14: backport-config-color-alias-for-ls.patch
|
Patch14: backport-config-color-alias-for-ls.patch
|
||||||
|
Patch15: backport-pr-don-t-use-uninitialized-var.patch
|
||||||
|
Patch16: backport-sort-fix-sort-g-infloop-again.patch
|
||||||
|
Patch17: backport-tests-sort-NaN-infloop-augment-testing-for-recent-fi.patch
|
||||||
|
Patch18: backport-touch-fix-aliasing-bug.patch
|
||||||
|
Patch19: backport-df-fix-duplicated-remote-entries-due-to-bind-mounts.patch
|
||||||
|
Patch20: backport-df-fix-memory-leak.patch
|
||||||
|
Patch21: backport-ls-avoid-triggering-automounts.patch
|
||||||
|
Patch22: backport-stat-only-automount-with-cached-never.patch
|
||||||
|
|
||||||
Conflicts: filesystem < 3
|
Conflicts: filesystem < 3
|
||||||
# To avoid clobbering installs
|
# To avoid clobbering installs
|
||||||
@ -147,6 +155,9 @@ fi
|
|||||||
%{_mandir}/man*/*
|
%{_mandir}/man*/*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Oct 21 2022 jiangchuangang <jiangchuangang@huawei.com> - 8.32-5
|
||||||
|
- backport some patches from upstream
|
||||||
|
|
||||||
* Wed Aug 31 2022 hongjinghao <hongjinghao@huawei.com> - 8.32-4
|
* Wed Aug 31 2022 hongjinghao <hongjinghao@huawei.com> - 8.32-4
|
||||||
- Auto display color difference when use ls
|
- Auto display color difference when use ls
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user