Richard Brown 2021-08-18 06:55:08 +00:00 committed by Git OBS Bridge
commit a7d8eceff2
8 changed files with 38 additions and 263 deletions

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b3a7a6221c3dc916085f0d205abf6b8e1ba443d4dd965118da364a1dc1cb3a26
size 1448828

View File

@ -1,16 +0,0 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEFV0/xQDINEhtHupnf9n8ywAL7u4FAlwqylgACgkQf9n8ywAL
7u6ujBAAh81vOPv2HhDG/DtnI0zLcP2Twr+beAxrhDkFi7hb9szFiAzx88nxlt7L
zmqVh4AF7czMsYsjujHYGmAFxgMFEW5HPbXEbNN2zOFC2lcIOq+5PyGyAN1tPdiG
Zcju/TiLXtmpyPt0aYsAnVx4lY2IBtjVhVRBSQnbZcWEXrZisNid0KoAkFFGQyim
loSgUN7622L8JDZQ+XrtnvPgEcR/wVcLmyGozLouKc1trkO8Pyhjam0UOQEFq12L
eEf5PAV9d3r/DqZQW98YhA5g5XwaAaOdKR7sbc1NDKqbo0qAtRZJ9aBn7TCxiBM/
4SQAu3HAgr14r97Df9yQdd/LbfOiMm47txz0OCWI2+QC5NIK9OVkdnjfPU2D6pRY
xh+9n8Gict5/BYO6NHNE8Zs50ZxQFEHvh0y/GJNTpJHLUBbvA0jWDfIXq1tlg4Gt
DkQz6TmJzltFDgh6TZcmCEWd/8beT81U7u/NZYmCWHUeNx7g6voe1oZeofqcG4EF
LXvBkK/go4l8p7qWQ3ifb7ydY4cOisfIQpddYJCpjEt+OAnVAzsfckpQUXiMzdpS
G7pqbR3DTIqAp1ZQJlV+UV4lcMxgnktg3gSzmtAct7/pfF5OVoch3EylyOWjs4F5
BTtIvn9AcaU0xuO1VogKu9HyZHq0InDV5dCsGgnz8M+9uHEiyf8=
=nbm3
-----END PGP SIGNATURE-----

3
diffutils-3.8.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a6bdd7d1b31266d11c4f4de6c1b748d4607ab0231af5188fc2533d0ae2438fec
size 1585120

16
diffutils-3.8.tar.xz.sig Normal file
View File

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEFV0/xQDINEhtHupnf9n8ywAL7u4FAmEHUX8ACgkQf9n8ywAL
7u4sHBAAqVMdOZrt6KAkAmtxPbTN93pZydq1TsIfDp1/1BWygy6LbVxyMY7SAB+k
WyhskuwlF+DhLwATUgfuqJTfXsEagw+JMlQpPAZAiyaNmOLOEGni7wLvx2qkQWz6
3SbYSQUQUig9k6Ccnv0QyFpadKOkueyDJ6m5FWhXW9GbNaYT/dNSGQ4v67JjLvcY
e3wZKuRH01HdtNrQghLa/wdt7toCVe6hXA/D91up6zRZ3nDO9c6Zp09b2O/ssyrp
r20bQuK1xlXQGwvJAIi7wmyY+OkMxTXXP9g7OsXU/sYaxQBoPMSbfrC2B6vx8dqQ
DmEoSWuh9n/2/aF4OzDa3gaYdRdlRZyeM/DioCSUbrhOU1xXOC4Lh0dHmxSZwUQ8
PlKphakQOk0wmf8FfAk+45oI/74clT8ixE2SUxmwSrgbCy7Cxn6G3L0fhE0x7k/m
PC9ogg6PMsM+ITyhj2xLRvEEB2/M5nKpzZJ5DG3uRzF+JwpXwp444LfDRplC3Cum
i159wBY2jpa3ip28xcP0pplwNEKhJM0n+u/KjB2xqx2cgnFqNk9J9VoW0mH+MWAj
CSCUIRdjjxxegHbxNsZ7B6Vh0RiAqSD5LPyPNzWGr1WYCM8gKimrtlQnoZG9JoTi
zU3LtUW10w2gw3madJzDNAwMNTnmWgZw6Tm8w9etmXWsJjTaD8g=
=XQl1
-----END PGP SIGNATURE-----

View File

@ -1,3 +1,17 @@
-------------------------------------------------------------------
Sat Aug 7 08:57:49 UTC 2021 - Andreas Stieger <andreas.stieger@gmx.de>
- diffutils 3.8:
* diff no longer treats a closed stdin as representing an absent
file in usage like 'diff --new-file - foo <&-'
* diff and related programs no longer get confused if stdin,
stdout, or stderr are closed
* cmp, diff and sdiff no longer treat negative command-line
option-arguments as if they were large positive numbers
- drop gnulib-test-avoid-FP-perror-strerror.patch, upstream
- drop gnulib-c-stack.patch, equivalent change in c-stack
- remove deprecated texinfo packaging macros
-------------------------------------------------------------------
Mon Jul 19 12:50:49 UTC 2021 - Andreas Schwab <schwab@suse.de>

View File

@ -17,7 +17,7 @@
Name: diffutils
Version: 3.7
Version: 3.8
Release: 0
Summary: GNU diff Utilities
License: GFDL-1.2-only AND GPL-3.0-or-later
@ -26,10 +26,6 @@ URL: https://www.gnu.org/software/diffutils/
Source0: https://ftp.gnu.org/gnu/%{name}/%{name}-%{version}.tar.xz
Source1: https://ftp.gnu.org/gnu/%{name}/%{name}-%{version}.tar.xz.sig
Source2: %{name}.keyring
Patch0: gnulib-test-avoid-FP-perror-strerror.patch
Patch1: gnulib-c-stack.patch
Requires(pre): %{install_info_prereq}
Requires(preun):%{install_info_prereq}
Provides: diff = %{version}
Obsoletes: diff < %{version}
@ -46,37 +42,21 @@ make source code patches, for instance.
%configure \
--with-packager="openSUSE" \
--with-packager-bug-reports="http://bugs.opensuse.org/"
make %{?_smp_mflags} V=1
%make_build
%check
%ifarch ppc64le ppc64
make %{?_smp_mflags} check || echo 'Warning: ignore error https://debbugs.gnu.org/cgi/bugreport.cgi?bug=36488'
%else
make %{?_smp_mflags} check
%endif
%make_build check
%install
%make_install
%find_lang %{name}
%post
%install_info --info-dir=%{_infodir} %{_infodir}/%{name}.info%{ext_info}
%preun
%install_info_delete --info-dir=%{_infodir} %{_infodir}/%{name}.info%{ext_info}
%files
%license COPYING
%doc AUTHORS NEWS README THANKS
%{_bindir}/cmp
%{_bindir}/diff
%{_bindir}/diff3
%{_bindir}/sdiff
%{_bindir}/*
%{_infodir}/diffutils.info%{?ext_info}
%{_mandir}/man1/cmp.1%{?ext_man}
%{_mandir}/man1/diff.1%{?ext_man}
%{_mandir}/man1/diff3.1%{?ext_man}
%{_mandir}/man1/sdiff.1%{?ext_man}
%{_mandir}/man1/*.1%{?ext_man}
%files lang -f %{name}.lang

View File

@ -1,122 +0,0 @@
From f9e2b20a12a230efa30f1d479563ae07d276a94b Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert@cs.ucla.edu>
Date: Wed, 30 Sep 2020 13:50:36 -0700
Subject: [PATCH] c-stack: stop using SIGSTKSZ
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Its been proposed to stop making SIGSTKSZ an integer constant:
https://sourceware.org/pipermail/libc-alpha/2020-September/118028.html
Also, using SIGSTKSZ in #if did not conform to current POSIX.
Also, avoiding SIGSTKSZ makes the code simpler and easier to grok.
* lib/c-stack.c (SIGSTKSZ): Remove.
(alternate_signal_stack): Now a 64 KiB array, for simplicity.
All uses changed.
---
ChangeLog | 9 +++++++++
lib/c-stack.c | 42 ++++++++++++++++++------------------------
lib/c-stack.h | 2 +-
3 files changed, 28 insertions(+), 25 deletions(-)
Index: diffutils-3.7/lib/c-stack.c
===================================================================
--- diffutils-3.7.orig/lib/c-stack.c
+++ diffutils-3.7/lib/c-stack.c
@@ -50,15 +50,6 @@
#if ! HAVE_STACK_T && ! defined stack_t
typedef struct sigaltstack stack_t;
#endif
-#ifndef SIGSTKSZ
-# define SIGSTKSZ 16384
-#elif HAVE_LIBSIGSEGV && SIGSTKSZ < 16384
-/* libsigsegv 2.6 through 2.8 have a bug where some architectures use
- more than the Linux default of an 8k alternate stack when deciding
- if a fault was caused by stack overflow. */
-# undef SIGSTKSZ
-# define SIGSTKSZ 16384
-#endif
#include <stdlib.h>
#include <string.h>
@@ -89,6 +80,16 @@ typedef struct sigaltstack stack_t;
# endif
#endif
+/* Storage for the alternate signal stack.
+ 64 KiB is not too large for Gnulib-using apps, and is large enough
+ for all known platforms. Smaller sizes may run into trouble.
+ For example, libsigsegv 2.6 through 2.8 have a bug where some
+ architectures use more than the Linux default of an 8 KiB alternate
+ stack when deciding if a fault was caused by stack overflow. */
+static max_align_t alternate_signal_stack[(64 * 1024
+ + sizeof (max_align_t) - 1)
+ / sizeof (max_align_t)];
+
/* The user-specified action to take when a SEGV-related program error
or stack overflow occurs. */
static void (* volatile segv_action) (int);
@@ -133,19 +134,6 @@ die (int signo)
#if (HAVE_SIGALTSTACK && HAVE_DECL_SIGALTSTACK \
&& HAVE_STACK_OVERFLOW_HANDLING) || HAVE_LIBSIGSEGV
-/* Storage for the alternate signal stack. */
-static union
-{
- char buffer[SIGSTKSZ];
-
- /* These other members are for proper alignment. There's no
- standard way to guarantee stack alignment, but this seems enough
- in practice. */
- long double ld;
- long l;
- void *p;
-} alternate_signal_stack;
-
static void
null_action (int signo __attribute__ ((unused)))
{
@@ -210,8 +198,8 @@ c_stack_action (void (*action) (int))
/* Always install the overflow handler. */
if (stackoverflow_install_handler (overflow_handler,
- alternate_signal_stack.buffer,
- sizeof alternate_signal_stack.buffer))
+ alternate_signal_stack,
+ sizeof alternate_signal_stack))
{
errno = ENOTSUP;
return -1;
@@ -284,14 +272,14 @@ c_stack_action (void (*action) (int))
stack_t st;
struct sigaction act;
st.ss_flags = 0;
+ st.ss_sp = alternate_signal_stack;
+ st.ss_size = sizeof alternate_signal_stack;
# if SIGALTSTACK_SS_REVERSED
/* Irix mistakenly treats ss_sp as the upper bound, rather than
lower bound, of the alternate stack. */
- st.ss_sp = alternate_signal_stack.buffer + SIGSTKSZ - sizeof (void *);
- st.ss_size = sizeof alternate_signal_stack.buffer - sizeof (void *);
-# else
- st.ss_sp = alternate_signal_stack.buffer;
- st.ss_size = sizeof alternate_signal_stack.buffer;
+ st.ss_size -= sizeof (void *);
+ char *ss_sp = st.ss_sp;
+ st.ss_sp = ss_sp + st.ss_size;
# endif
r = sigaltstack (&st, NULL);
if (r != 0)
Index: diffutils-3.7/lib/c-stack.h
===================================================================
--- diffutils-3.7.orig/lib/c-stack.h
+++ diffutils-3.7/lib/c-stack.h
@@ -34,7 +34,7 @@
A null ACTION acts like an action that does nothing.
ACTION must be async-signal-safe. ACTION together with its callees
- must not require more than SIGSTKSZ bytes of stack space. Also,
+ must not require more than 64 KiB of stack space. Also,
ACTION should not call longjmp, because this implementation does
not guarantee that it is safe to return to the original stack.

View File

@ -1,97 +0,0 @@
Avoid false-positive error in gnulib tests 'test-perror2' and 'test-strerror_r'.
On openSUSE OBS, the above gnulib tests fail on armv7l.
Corresponding report on the gnulib mailing list:
https://lists.gnu.org/r/bug-gnulib/2020-08/msg00220.html
From: Florian Weimer
Date: Thu, 27 Aug 2020 09:41:34 +0200
Subject: Use-after-free in test-perror2, test-strerror_r
The problem is visible with glibc 2.32 under valgrind:
==20== Invalid read of size 1
==20== at 0x483DAB4: strcmp (vg_replace_strmem.c:847)
==20== by 0x109414: main (test-perror2.c:84)
==20== Address 0x4a1a3d0 is 0 bytes inside a block of size 17 free'd
==20== at 0x483A9F5: free (vg_replace_malloc.c:538)
==20== by 0x48E2134: strerror_l (in /usr/lib64/libc-2.32.so)
==20== by 0x109328: main (test-perror2.c:72)
==20== Block was alloc'd at
==20== at 0x4839809: malloc (vg_replace_malloc.c:307)
==20== by 0x48CA03F: __vasprintf_internal (in /usr/lib64/libc-2.32.so)
==20== by 0x48A46F9: asprintf (in /usr/lib64/libc-2.32.so)
==20== by 0x48E2184: strerror_l (in /usr/lib64/libc-2.32.so)
==20== by 0x1092E2: main (test-perror2.c:67)
==20==
==20== Invalid read of size 1
==20== at 0x483DAC8: strcmp (vg_replace_strmem.c:847)
==20== by 0x109414: main (test-perror2.c:84)
==20== Address 0x4a1a3d1 is 1 bytes inside a block of size 17 free'd
==20== at 0x483A9F5: free (vg_replace_malloc.c:538)
==20== by 0x48E2134: strerror_l (in /usr/lib64/libc-2.32.so)
==20== by 0x109328: main (test-perror2.c:72)
==20== Block was alloc'd at
==20== at 0x4839809: malloc (vg_replace_malloc.c:307)
==20== by 0x48CA03F: __vasprintf_internal (in /usr/lib64/libc-2.32.so)
==20== by 0x48A46F9: asprintf (in /usr/lib64/libc-2.32.so)
==20== by 0x48E2184: strerror_l (in /usr/lib64/libc-2.32.so)
==20== by 0x1092E2: main (test-perror2.c:67)
I think it's the test that's invalid.
This was reported as an actual grep test failure (without valgrind) on
32-bit Arm, where glibc malloc happens to return a different buffer
address for the internal allocation (so that msg3 != msg4).
test-strerror_r has the same issue.
Thanks,
Florian
Upstream patch:
https://git.sv.gnu.org/cgit/gnulib.git/commit/?id=175e0bc72808
From 175e0bc72808d564074c4adcc72aeadb74adfcc6 Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert@cs.ucla.edu>
Date: Thu, 27 Aug 2020 17:52:58 -0700
Subject: [PATCH] perror, strerror_r: remove unportable tests
Problem reported by Florian Weimer in:
https://lists.gnu.org/r/bug-gnulib/2020-08/msg00220.html
* tests/test-perror2.c (main):
* tests/test-strerror_r.c (main): Omit unportable tests.
This downstream patch is identical to upstream one modulo the ChangeLog entry.
---
gnulib-tests/test-perror2.c | 3 ---
gnulib-tests/test-strerror_r.c | 3 ---
2 files changed, 6 deletions(-)
--- a/gnulib-tests/test-perror2.c
+++ b/gnulib-tests/test-perror2.c
@@ -79,9 +79,6 @@ main (void)
errno = -5;
perror ("");
ASSERT (!ferror (stderr));
- ASSERT (msg1 == msg2 || msg1 == msg4 || STREQ (msg1, str1));
- ASSERT (msg2 == msg4 || STREQ (msg2, str2));
- ASSERT (msg3 == msg4 || STREQ (msg3, str3));
ASSERT (STREQ (msg4, str4));
free (str1);
--- a/gnulib-tests/test-strerror_r.c
+++ b/gnulib-tests/test-strerror_r.c
@@ -165,9 +165,6 @@ main (void)
strerror_r (EACCES, buf, sizeof buf);
strerror_r (-5, buf, sizeof buf);
- ASSERT (msg1 == msg2 || msg1 == msg4 || STREQ (msg1, str1));
- ASSERT (msg2 == msg4 || STREQ (msg2, str2));
- ASSERT (msg3 == msg4 || STREQ (msg3, str3));
ASSERT (STREQ (msg4, str4));
free (str1);