public inbox for ipfire-scm@lists.ipfire.org
 help / color / mirror / Atom feed
* [git.ipfire.org] IPFire 2.x development tree branch, next, updated. a06f2fa02e66d247fc271ac639c64eabb8e9d514
@ 2023-06-16  8:56 Michael Tremer
  0 siblings, 0 replies; only message in thread
From: Michael Tremer @ 2023-06-16  8:56 UTC (permalink / raw)
  To: ipfire-scm

[-- Attachment #1: Type: text/plain, Size: 301255 bytes --]

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "IPFire 2.x development tree".

The branch, next has been updated
       via  a06f2fa02e66d247fc271ac639c64eabb8e9d514 (commit)
       via  863858b0b7bc98ffc2bc1cc2a7a4d24bfd7bc513 (commit)
       via  ed1a24686c9a9255290906a8c7bd1cedd7934cdc (commit)
       via  db9c7fb8260c28e4eec30ee0386e8f5945ad10fc (commit)
       via  8ad61512ef3649f21c090f645a15478644620b5f (commit)
       via  ec05e6c6bfc328e885af67997ec1419a0e3a98fc (commit)
       via  c7c1f0e345143e6e053447cc985039094540ff6d (commit)
       via  b776a9403ad1e825b319341e84fb38a3a49280bc (commit)
       via  4e788d49969a97ed3dae4a8447949dddae4224b9 (commit)
       via  87cd2c413584c9b195b912666eaf33153f07adfd (commit)
       via  8e498000ec9e16b7952cc3753f9a976caffe49d9 (commit)
       via  aec620df453bd2040ec8cc27362e256b5db12d15 (commit)
       via  736441bb3954544a770eee9dad686435af440f9c (commit)
       via  67557306b294cfec40b18d0e3b113d4c5dbc5492 (commit)
       via  5a7fe40a6a60808f84789746a6b6b3002de311f3 (commit)
       via  10c3fc94d209a57919a49bdb8dfe432c071e155a (commit)
       via  68b8b5fa81dc1ebecec5ee3a671866b1f4324611 (commit)
       via  dc60a4256a49032cdbf39c98c41c367087583407 (commit)
       via  177c2c3f353cbd07a60bbea9dac21f002b387614 (commit)
       via  d6531fb525cd9101548a1923b4b83d4c7e7bfb8f (commit)
       via  da63874c75c3afe9e80f6dd4fbb60683024ea004 (commit)
       via  036889a8d2976e9513521c25a4e5a285b7bee754 (commit)
       via  646db7b386234563df42be7b777135dca57748c9 (commit)
       via  9d189d0f07f88057236eb02b6125e3753e05a556 (commit)
       via  579c5830aa99b4f2d67e5ac7d8688babe8b3caee (commit)
       via  237e84837eefb20230ee1f3a03ab22c674db30cd (commit)
       via  642e18d96b5e5eed9e63d9ad3047613c1033a1d4 (commit)
       via  7adec7d392244e33d202bacf0d8955edaa55007b (commit)
       via  50ae4dcc50d2bc70b8afe8f98553d822328775b9 (commit)
       via  9cd5350f0a16c78886ebca6e9d95c849af04bb33 (commit)
       via  9f6251e13bbcdea200cf890638c7edfa33b43223 (commit)
       via  b1c5bde6c7074b33610987cbae34561f318845cf (commit)
       via  b5661ddc236ab814a0bd31142af3b8e5dd4c2613 (commit)
       via  7bff30a8ba0c07b7ea1afc49a27f1b527f8a7869 (commit)
       via  0bead24b3dce225aba3db047a1349965b6ea812a (commit)
       via  730fa3189bd691c9a0ffaf3f83ee4cc554903ad9 (commit)
       via  ca744e25d0c6a0ccfdfa63ee557675b1ae1e69b1 (commit)
       via  0919eca9dd71e33bdd7f92ae5372d945fbc2649a (commit)
       via  a8c72d6f5a6575b828192f3edbce3a4ac3e9f068 (commit)
       via  c06f8d94a438a2243f75698523e623882b496fd1 (commit)
       via  e0d59c61dd9771de79bd558800586823faee34be (commit)
       via  9a7aea8b32cd9792002e5db09f72e691d7fae96a (commit)
       via  2eda545fc75410106b6acf663a6d2751c795d4ad (commit)
       via  a75ec91d070571e455713a2d7ff2844e7efcd979 (commit)
       via  89233e1abe33e087a7aa567f963412b1d008ca2e (commit)
       via  e031838684f225c334595f87c783634cc3d4163d (commit)
       via  36edd6d923758255595c42beceeae9d347b315e4 (commit)
       via  f24ce4558aeaf5e3a81f059a4c23a17651afbe2d (commit)
       via  36a19f2b398f8d70e0c6dc00adee5274ae7da79b (commit)
       via  94820d5062214e5d9404209386e122cdad0edb77 (commit)
       via  13183b06722267b5e95d8224bb25fa6cbac27f0f (commit)
      from  0ebb271d1ec8b68f73dbd396b0f3a0aa4a50a501 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit a06f2fa02e66d247fc271ac639c64eabb8e9d514
Author: Adolf Belka <adolf.belka(a)ipfire.org>
Date:   Fri Jun 9 23:10:10 2023 +0200

    transmission: Update to version 4.0.3
    
    - Update from version 3.00 to 4.0.3
    - This v2 version has usr/share/transmission directory uncommented.
    - Update of rootfile
    - Build changed from autotools configure to cmake
    - Changelog is very large. For details see
       https://github.com/transmission/transmission/releases/
    
    Signed-off-by: Adolf Belka <adolf.belka(a)ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit 863858b0b7bc98ffc2bc1cc2a7a4d24bfd7bc513
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date:   Thu Jun 15 09:39:39 2023 +0000

    core176: Ship all misc-progs again
    
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit ed1a24686c9a9255290906a8c7bd1cedd7934cdc
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date:   Wed May 24 09:08:41 2023 +0000

    misc-progs: setuid: Return exit code from called process
    
    This patch will return the exit code from the called process which has
    not been done before. This made it more difficult to catch any
    unsuccessful calls from the web UI.
    
    Partly Fixes: #12863
    Tested-by: Jon Murphy <jon.murphy(a)ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit db9c7fb8260c28e4eec30ee0386e8f5945ad10fc
Author: Adolf Belka <adolf.belka(a)ipfire.org>
Date:   Sat May 20 14:10:48 2023 +0200

    wavemon: Update to version 0.9.4
    
    - Update from version 0.7.5 to 0.9.4
    - Update of rootfile
    - wavemon would not build because it could not find the netlink include files. wavemon was
       still looking in include/netlink/ as for libnl version 1 but with libnl3 the include
       files are in include/libnl3/netlink/
    - Based on an issue entry in the wavemon github repo I created the patch to force wavemon
       to look in the correct place.
    
    Signed-off-by: Adolf Belka <adolf.belka(a)ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit 8ad61512ef3649f21c090f645a15478644620b5f
Author: Adolf Belka <adolf.belka(a)ipfire.org>
Date:   Sat May 20 14:10:46 2023 +0200

    tmux: Update to version 3.3a
    
    - Update from version 3.3 to 3.3a
    - Update of rootfile not required
    - Changelog
    CHANGES FROM 3.3 TO 3.3a
    	* Do not crash when run-shell produces output from a config file.
    	* Do not unintentionally turn off all mouse mode when button mode is also
    	  present.
    
    Signed-off-by: Adolf Belka <adolf.belka(a)ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit ec05e6c6bfc328e885af67997ec1419a0e3a98fc
Author: Adolf Belka <adolf.belka(a)ipfire.org>
Date:   Sat May 20 14:10:45 2023 +0200

    stunnel: Update to version 5.69
    
    - Update from version 5.63 to 5.69
    - Update of rootfile not required
    - Changelog
    Version 5.69, 2023.03.04, urgency: MEDIUM
    	* New features
    	  - Improved logging performance with the "output" option.
    	  - Improved file read performance on the WIN32 platform.
    	  - DH and kDHEPSK ciphersuites removed from FIPS defaults.
    	  - Set the LimitNOFILE ulimit in stunnel.service to allow
    	    for up to 10,000 concurrent clients.
    	* Bugfixes
    	  - Fixed the "CApath" option on the WIN32 platform by
    	    applying https://github.com/openssl/openssl/pull/20312.
    	  - Fixed stunnel.spec used for building rpm packages.
    	  - Fixed tests on some OSes and architectures by merging
    	    Debian 07-tests-errmsg.patch (thx to Peter Pentchev).
    Version 5.68, 2023.02.07, urgency: HIGH
    	* Security bugfixes
    	  - OpenSSL DLLs updated to version 3.0.8.
    	* New features
    	  - Added the new 'CAengine' service-level option
    	    to load a trusted CA certificate from an engine.
    	  - Added requesting client certificates in server
    	    mode with 'CApath' besides 'CAfile'.
    	  - Improved file read performance.
    	  - Improved logging performance.
    	* Bugfixes
    	  - Fixed EWOULDBLOCK errors in protocol negotiation.
    	  - Fixed handling TLS errors in protocol negotiation.
    	  - Prevented following fatal TLS alerts with TCP resets.
    	  - Improved OpenSSL initialization on WIN32.
    	  - Improved testing suite stability.
    Version 5.67, 2022.11.01, urgency: HIGH
    	* Security bugfixes
    	  - OpenSSL DLLs updated to version 3.0.7.
    	* New features
    	  - Provided a logging callback to custom engines.
    	* Bugfixes
    	  - Fixed "make cert" with OpenSSL older than 3.0.
    	  - Fixed the code and the documentation to use conscious
    	    language for SNI servers (thx to Clemens Lang).
    Version 5.66, 2022.09.11, urgency: MEDIUM
    	* New features
    	  - OpenSSL 3.0 FIPS Provider support for Windows.
    	* Bugfixes
    	  - Fixed building on machines without pkg-config.
    	  - Added the missing "environ" declaration for
    	    BSD-based operating systems.
    	  - Fixed the passphrase dialog with OpenSSL 3.0.
    Version 5.65, 2022.07.17, urgency: HIGH
    	* Security bugfixes
    	  - OpenSSL DLLs updated to version 3.0.5.
    	* Bugfixes
    	  - Fixed handling globally enabled FIPS.
    	  - Fixed openssl.cnf processing in WIN32 GUI.
    	  - Fixed a number of compiler warnings.
    	  - Fixed tests on older versions of OpenSSL.
    Version 5.64, 2022.05.06, urgency: MEDIUM
    	* Security bugfixes
    	  - OpenSSL DLLs updated to version 3.0.3.
    	* New features
    	  - Updated the pkcs11 engine for Windows.
    	* Bugfixes
    	  - Removed the SERVICE_INTERACTIVE_PROCESS flag in
    	    "stunnel -install".
    
    Signed-off-by: Adolf Belka <adolf.belka(a)ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit c7c1f0e345143e6e053447cc985039094540ff6d
Author: Adolf Belka <adolf.belka(a)ipfire.org>
Date:   Fri May 19 19:04:52 2023 +0200

    stress: Update to version 1.0.7
    
    - Update from version 1.0.5 to 1.0.7
    - Update of rootfile not required
    - Changelog
    	Version 1.0.7
    	  * Check for sys/prctl.h availability, because non-Linux
    	    architectures don't provide <sys/prctl.h>.
    	  * Improved GitHub CI:
    	      - Added CI test for macOS.
    	      - Added a check for stress command.
    	      - Added a test for 'make dist-bzip2'.
    	  * Moved manpage from doc/ to man/.
    	Version 1.0.6
    	  * Register parent termination signal in child processes.
    	  * Added 'make dist' check in CI test.
    	  * Added rights for Vratislav Bendel.
    	  * Re-organized src/stress.c via astyle command.
    	  * Updated GPL-2 license text for src/stress.c.
    
    Signed-off-by: Adolf Belka <adolf.belka(a)ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit b776a9403ad1e825b319341e84fb38a3a49280bc
Author: Adolf Belka <adolf.belka(a)ipfire.org>
Date:   Fri May 19 19:04:51 2023 +0200

    strace: Update to version 6.3
    
    - Update from version 6.1 to 6.3
    - Update of rootfile not required
    - Changelog
    Noteworthy changes in release 6.3 (2023-05-08)
    	* Improvements
    	  * Implemented --trace-fds=set option for filtering only the syscalls
    	    that operate on the specified set of file descriptors.
    	  * Implemented --decode-fds=signalfd option for decoding of signal masks
    	    associated with signalfd file descriptors.
    	  * Implemented --syscall-limit option to automatically detach tracees
    	    after capturing the specified number of syscalls.
    	  * Implemented --argv0 option to set argv[0] of the command being executed.
    	  * Implemented decoding of PR_GET_MDWE and PR_SET_MDWE operations of prctl
    	    syscall.
    	  * Implemented decoding of IP_LOCAL_PORT_RANGE socket option.
    	  * Implemented decoding of IFLA_BRPORT_MCAST_N_GROUPS,
    	    IFLA_BRPORT_MCAST_MAX_GROUPS, IFLA_GSO_IPV4_MAX_SIZE,
    	    IFLA_GRO_IPV4_MAX_SIZE, and TCA_EXT_WARN_MSG netlink attributes.
    	  * Updated lists of F_SEAL_*, IFLA_*, IORING_*, MFD_*, NFT_*, TCA_*,
    	    and V4L2_PIX_FMT_* constants.
    	  * Updated lists of ioctl commands from Linux 6.3.
    	* Bug fixes
    	  * Fixed build on hppa with uapi headers from Linux >= 6.2.
    	  * Fixed --status filtering when -c option is in use.
    Noteworthy changes in release 6.2 (2023-02-26)
    	* Improvements
    	  * Implemented collision resolution for overlapping ioctl commands
    	    from tty and snd subsystems.
    	  * Implemented decoding of IFLA_BRPORT_MAB and IFLA_DEVLINK_PORT
    	    netlink attributes.
    	  * Updated lists of ALG_*, BPF_*, IFLA_*, KEY_*, KVM_*, LANDLOCK_*,
    	    MEMBARRIER_*, NFT_*, NTF_*, and V4L2_* constants.
    	  * Updated lists of ioctl commands from Linux 6.2.
    	* Bug fixes
    	  * Fixed build on alpha architecture.
    
    Signed-off-by: Adolf Belka <adolf.belka(a)ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit 4e788d49969a97ed3dae4a8447949dddae4224b9
Author: Adolf Belka <adolf.belka(a)ipfire.org>
Date:   Fri May 19 19:04:50 2023 +0200

    nginx: Update to version 1.24.0
    
    - Update from version 1.22.1 to 1.24.0
    - Update of rootfile not required
    - Changelog (including some CVE's)
    Changes with nginx 1.24.0                                        11 Apr 2023
        *) 1.24.x stable branch.
    Changes with nginx 1.23.4                                        28 Mar 2023
        *) Change: now TLSv1.3 protocol is enabled by default.
        *) Change: now nginx issues a warning if protocol parameters of a
           listening socket are redefined.
        *) Change: now nginx closes connections with lingering if pipelining was
           used by the client.
        *) Feature: byte ranges support in the ngx_http_gzip_static_module.
        *) Bugfix: port ranges in the "listen" directive did not work; the bug
           had appeared in 1.23.3.
           Thanks to Valentin Bartenev.
        *) Bugfix: incorrect location might be chosen to process a request if a
           prefix location longer than 255 characters was used in the
           configuration.
        *) Bugfix: non-ASCII characters in file names on Windows were not
           supported by the ngx_http_autoindex_module, the ngx_http_dav_module,
           and the "include" directive.
        *) Change: the logging level of the "data length too long", "length too
           short", "bad legacy version", "no shared signature algorithms", "bad
           digest length", "missing sigalgs extension", "encrypted length too
           long", "bad length", "bad key update", "mixed handshake and non
           handshake data", "ccs received early", "data between ccs and
           finished", "packet length too long", "too many warn alerts", "record
           too small", and "got a fin before a ccs" SSL errors has been lowered
           from "crit" to "info".
        *) Bugfix: a socket leak might occur when using HTTP/2 and the
           "error_page" directive to redirect errors with code 400.
        *) Bugfix: messages about logging to syslog errors did not contain
           information that the errors happened while logging to syslog.
           Thanks to Safar Safarly.
        *) Workaround: "gzip filter failed to use preallocated memory" alerts
           appeared in logs when using zlib-ng.
        *) Bugfix: in the mail proxy server.
    Changes with nginx 1.23.3                                        13 Dec 2022
        *) Bugfix: an error might occur when reading PROXY protocol version 2
           header with large number of TLVs.
        *) Bugfix: a segmentation fault might occur in a worker process if SSI
           was used to process subrequests created by other modules.
           Thanks to Ciel Zhao.
        *) Workaround: when a hostname used in the "listen" directive resolves
           to multiple addresses, nginx now ignores duplicates within these
           addresses.
        *) Bugfix: nginx might hog CPU during unbuffered proxying if SSL
           connections to backends were used.
    Changes with nginx 1.23.2                                        19 Oct 2022
        *) Security: processing of a specially crafted mp4 file by the
           ngx_http_mp4_module might cause a worker process crash, worker
           process memory disclosure, or might have potential other impact
           (CVE-2022-41741, CVE-2022-41742).
        *) Feature: the "$proxy_protocol_tlv_..." variables.
        *) Feature: TLS session tickets encryption keys are now automatically
           rotated when using shared memory in the "ssl_session_cache"
           directive.
        *) Change: the logging level of the "bad record type" SSL errors has
           been lowered from "crit" to "info".
           Thanks to Murilo Andrade.
        *) Change: now when using shared memory in the "ssl_session_cache"
           directive the "could not allocate new session" errors are logged at
           the "warn" level instead of "alert" and not more often than once per
           second.
        *) Bugfix: nginx/Windows could not be built with OpenSSL 3.0.x.
        *) Bugfix: in logging of the PROXY protocol errors.
           Thanks to Sergey Brester.
        *) Workaround: shared memory from the "ssl_session_cache" directive was
           spent on sessions using TLS session tickets when using TLSv1.3 with
           OpenSSL.
        *) Workaround: timeout specified with the "ssl_session_timeout"
           directive did not work when using TLSv1.3 with OpenSSL or BoringSSL.
    Changes with nginx 1.23.1                                        19 Jul 2022
        *) Feature: memory usage optimization in configurations with SSL
           proxying.
        *) Feature: looking up of IPv4 addresses while resolving now can be
           disabled with the "ipv4=off" parameter of the "resolver" directive.
        *) Change: the logging level of the "bad key share", "bad extension",
           "bad cipher", and "bad ecpoint" SSL errors has been lowered from
           "crit" to "info".
        *) Bugfix: while returning byte ranges nginx did not remove the
           "Content-Range" header line if it was present in the original backend
           response.
        *) Bugfix: a proxied response might be truncated during reconfiguration
           on Linux; the bug had appeared in 1.17.5.
    Changes with nginx 1.23.0                                        21 Jun 2022
        *) Change in internal API: now header lines are represented as linked
           lists.
        *) Change: now nginx combines arbitrary header lines with identical
           names when sending to FastCGI, SCGI, and uwsgi backends, in the
           $r->header_in() method of the ngx_http_perl_module, and during lookup
           of the "$http_...", "$sent_http_...", "$sent_trailer_...",
           "$upstream_http_...", and "$upstream_trailer_..." variables.
        *) Bugfix: if there were multiple "Vary" header lines in the backend
           response, nginx only used the last of them when caching.
        *) Bugfix: if there were multiple "WWW-Authenticate" header lines in the
           backend response and errors with code 401 were intercepted or the
           "auth_request" directive was used, nginx only sent the first of the
           header lines to the client.
        *) Change: the logging level of the "application data after close
           notify" SSL errors has been lowered from "crit" to "info".
        *) Bugfix: connections might hang if nginx was built on Linux 2.6.17 or
           newer, but was used on systems without EPOLLRDHUP support, notably
           with epoll emulation layers; the bug had appeared in 1.17.5.
           Thanks to Marcus Ball.
        *) Bugfix: nginx did not cache the response if the "Expires" response
           header line disabled caching, but following "Cache-Control" header
           line enabled caching.
    Changes with nginx 1.21.6                                        25 Jan 2022
        *) Bugfix: when using EPOLLEXCLUSIVE on Linux client connections were
           unevenly distributed among worker processes.
        *) Bugfix: nginx returned the "Connection: keep-alive" header line in
           responses during graceful shutdown of old worker processes.
        *) Bugfix: in the "ssl_session_ticket_key" when using TLSv1.3.
    Changes with nginx 1.21.5                                        28 Dec 2021
        *) Change: now nginx is built with the PCRE2 library by default.
        *) Change: now nginx always uses sendfile(SF_NODISKIO) on FreeBSD.
        *) Feature: support for sendfile(SF_NOCACHE) on FreeBSD.
        *) Feature: the $ssl_curve variable.
        *) Bugfix: connections might hang when using HTTP/2 without SSL with the
           "sendfile" and "aio" directives.
    Changes with nginx 1.21.4                                        02 Nov 2021
        *) Change: support for NPN instead of ALPN to establish HTTP/2
           connections has been removed.
        *) Change: now nginx rejects SSL connections if ALPN is used by the
           client, but no supported protocols can be negotiated.
        *) Change: the default value of the "sendfile_max_chunk" directive was
           changed to 2 megabytes.
        *) Feature: the "proxy_half_close" directive in the stream module.
        *) Feature: the "ssl_alpn" directive in the stream module.
        *) Feature: the $ssl_alpn_protocol variable.
        *) Feature: support for SSL_sendfile() when using OpenSSL 3.0.
        *) Feature: the "mp4_start_key_frame" directive in the
           ngx_http_mp4_module.
           Thanks to Tracey Jaquith.
        *) Bugfix: in the $content_length variable when using chunked transfer
           encoding.
        *) Bugfix: after receiving a response with incorrect length from a
           proxied backend nginx might nevertheless cache the connection.
           Thanks to Awdhesh Mathpal.
        *) Bugfix: invalid headers from backends were logged at the "info" level
           instead of "error"; the bug had appeared in 1.21.1.
        *) Bugfix: requests might hang when using HTTP/2 and the "aio_write"
           directive.
    Changes with nginx 1.21.3                                        07 Sep 2021
        *) Change: optimization of client request body reading when using
           HTTP/2.
        *) Bugfix: in request body filters internal API when using HTTP/2 and
           buffering of the data being processed.
    Changes with nginx 1.21.2                                        31 Aug 2021
        *) Change: now nginx rejects HTTP/1.0 requests with the
           "Transfer-Encoding" header line.
        *) Change: export ciphers are no longer supported.
        *) Feature: OpenSSL 3.0 compatibility.
        *) Feature: the "Auth-SSL-Protocol" and "Auth-SSL-Cipher" header lines
           are now passed to the mail proxy authentication server.
           Thanks to Rob Mueller.
        *) Feature: request body filters API now permits buffering of the data
           being processed.
        *) Bugfix: backend SSL connections in the stream module might hang after
           an SSL handshake.
        *) Bugfix: the security level, which is available in OpenSSL 1.1.0 or
           newer, did not affect loading of the server certificates when set
           with "@SECLEVEL=N" in the "ssl_ciphers" directive.
        *) Bugfix: SSL connections with gRPC backends might hang if select,
           poll, or /dev/poll methods were used.
        *) Bugfix: when using HTTP/2 client request body was always written to
           disk if the "Content-Length" header line was not present in the
           request.
    
    Signed-off-by: Adolf Belka <adolf.belka(a)ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit 87cd2c413584c9b195b912666eaf33153f07adfd
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date:   Thu Jun 15 09:38:01 2023 +0000

    core176: Ship mpfr
    
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit 8e498000ec9e16b7952cc3753f9a976caffe49d9
Author: Adolf Belka <adolf.belka(a)ipfire.org>
Date:   Fri May 19 19:04:49 2023 +0200

    mpfr: Update with latest bug patches
    
    - Update version 4.2.0 from 4 bug patches to 9 bug patches
    - Update of rootfile not required
    - Bug fix changelog
    5	The mpfr_reldiff function, which computes |b−c|/b, is buggy on special values,
             e.g. on the following (b,c) values: (+Inf,+Inf) gives ±0 instead of NaN (like
             NaN/Inf); (+0,+0) gives 1 instead of NaN (like 0/0); (+0,1) gives 1 instead of
             Inf (like 1/0). Moreover, the sign of 0 for (+Inf,+Inf) or (−Inf,−Inf) is not
             set, i.e. it is just the sign of the destination before the call; as a
    	 consequence, results are not even consistent. These bugs are fixed by the
    	 reldiff patch.
    	Corresponding changeset in the 4.2 branch: 81e4d4427.
    6	The reuse tests are incomplete: the sign of a result zero is not checked, so
    	 that it can miss bugs (one of the mpfr_reldiff bugs mentioned above, in
    	 particular). The tests-reuse patch adds a check of the sign of zero and
    	 contains other minor improvements.
    	Corresponding changeset in the 4.2 branch: e6d47b8f5.
    7	The general code for the power function (mpfr_pow_general internal function) has
    	 two bugs in particular cases: the first one is an incorrect computation of the
    	 error bound when there has been an intermediate underflow or overflow (in such
    	 a case, the computation is performed again with a rescaling, thus with an
    	 additional error term, but there is a bug in the computation of this term), so
    	 that the result may be rounded incorrectly (in particular, a spurious overflow
    	 is possible); the second one occurs in a corner case (destination precision 1,
    	 rounding to nearest, and where the rounded result assuming an unbounded
    	 exponent range would be 2emin−2 and the exact result is larger than this value),
    	 with the only consequence being a missing underflow exception (the underflow
    	 flag is not set). These two bugs are fixed by the pow_general patch, which also
    	 provides testcases.
    	Note: The second bug was introduced by commit 936df8ef6 in MPFR 4.1.0 (the code
    	 simplification was incorrect, and there were no associated tests in the
    	 testsuite).
    	Corresponding changesets in the 4.2 branch: 85bc7331c, 5fa407a6c, 9a16c173e.
    8	The mpfr_compound_si function can take a huge amount of memory and time in some
    	 cases (when the argument x is a large even integer and xn is represented exactly
    	 in the target precision) and does not correctly detect overflows and underflows.
    	 This is fixed by the compound patch, which also provides various tests.
    	Corresponding changesets in the 4.2 branch: 7635c4a35, 74d86a61f, 952fb0f5c,
    	 a4894f68d, 7bb748775, f5cb40571, d87459969.
    9	MPFR can crash when a formatted output function is called with %.2147483648Rg in
    	 the format string. For instance: mpfr_snprintf (NULL, 0, "%.2147483648Rg\n", x);
    	 This is fixed by the printf_large_prec_for_g patch, which also provides
    	 testcases.
    	Corresponding changesets in the 4.2 branch: 686f82776, 769ad91a6.
    
    Signed-off-by: Adolf Belka <adolf.belka(a)ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit aec620df453bd2040ec8cc27362e256b5db12d15
Author: Adolf Belka <adolf.belka(a)ipfire.org>
Date:   Fri May 19 19:04:48 2023 +0200

    minidlna: Update to version 1.3.2
    
    - Update from version 1.3.0 to 1.3.2
    - Update of rootfile not required
    - Patch for CVE-2022-26505 is now built into the source tarball
    - Changelog
    1.3.2 - Released 30-Aug-2022
    	- Improved DNS rebinding attack protection.
    	- Added Samsung Neo QLED series (2021) support.
    	- Added webm/rm/rmvb support.
    1.3.1 - Released 11-Feb-2022
    	- Fixed a potential crash in SSDP request parsing.
    	- Fixed a configure script failure on some platforms.
    	- Protect against DNS rebinding attacks.
    	- Fix an socket leakage issue on some platforms.
    	- Minor bug fixes.
    
    Signed-off-by: Adolf Belka <adolf.belka(a)ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit 736441bb3954544a770eee9dad686435af440f9c
Author: Adolf Belka <adolf.belka(a)ipfire.org>
Date:   Fri May 19 19:04:47 2023 +0200

    fping: Update to version 5.1
    
    - Update from version 5.0 to 5.1
    - Update of rootfile not required
    - Changelog
    fping 5.1 (2022-02-06)
        ## Bugfixes and other changes
    	- Use setcap to specify specific files in fping.spec (#232, thanks @zdyxry)
    	- Netdata: use host instead name as family label (#226, thanks @k0ste)
    	- Netdata: use formatstring macro PRId64 (#229, thanks @gsnw)
    	- Allow -4 option to be given multiple times (#215, thanks @normanr)
    	- Documentation fix (#208, thanks @timgates42)
    	- Retain privileges until after privileged setsockopt (#200, thanks @simetnicbr)
    	- Set bind to source only when option is set (#198, thanks @dinoex)
    	- Update Azure test pipeline (#197, thanks @gsnw)
    	- Fix getnameinfo not called properly for IPv4 (#227, thanks @aafbsd)
    	- Fixed wrong timestamp under Free- and OpenBSD and macOS (#217, thanks @gsnw)
    	- Documentation updates (#240, thanks @auerswal)
    	- Updated autotools (autoconf 2.71, automake 1.16.5, libtool 2.4.6)
    
    Signed-off-by: Adolf Belka <adolf.belka(a)ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit 67557306b294cfec40b18d0e3b113d4c5dbc5492
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date:   Thu Jun 15 09:36:59 2023 +0000

    core176: Ship pam
    
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit 5a7fe40a6a60808f84789746a6b6b3002de311f3
Author: Adolf Belka <adolf.belka(a)ipfire.org>
Date:   Fri May 19 13:47:53 2023 +0200

    pam: Update to version 1.5.3
    
    - Update from version 1.5.2 to 1.5.3
    - Update of rootfile
    - Changelog
    Release 1.5.3
    	* configure: added options to configure stylesheets.
    	* configure: added --enable-logind option to use logind instead of utmp
    	  in pam_issue and pam_timestamp.
    	* pam_modutil_getlogin: changed to use getlogin() from libc instead of parsing
              utmp.
    	* Added libeconf support to pam_env and pam_shells.
    	* Added vendor directory support to pam_access, pam_env, pam_group, pam_faillock,
    	  pam_limits, pam_namespace, pam_pwhistory, pam_sepermit, pam_shells, and pam_time.
    	* pam_limits: changed to not fail on missing config files.
    	* pam_pwhistory: added conf= option to specify config file location.
    	* pam_pwhistory: added file= option to specify password history file location.
    	* pam_shells: added shells.d support when libeconf and vendordir are enabled.
    	* Deprecated pam_lastlog: this module is no longer built by default because
    	  it uses utmp, wtmp, btmp and lastlog, but none of them are Y2038 safe,
    	  even on 64bit architectures.
    	  pam_lastlog will be removed in one of the next releases, consider using
    	  pam_lastlog2 (from https://github.com/thkukuk/lastlog2) and/or
    	  pam_wtmpdb (from https://github.com/thkukuk/wtmpdb) instead.
    	* Deprecated _pam_overwrite(), _pam_overwrite_n(), and _pam_drop_reply() macros
    	  provided by _pam_macros.h; the memory override performed by these macros can
    	  be optimized out by the compiler and therefore can no longer be relied upon.
    	* Multiple minor bug fixes, portability fixes, documentation improvements,
    	  and translation updates.
    
    Signed-off-by: Adolf Belka <adolf.belka(a)ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit 10c3fc94d209a57919a49bdb8dfe432c071e155a
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date:   Thu Jun 15 09:36:19 2023 +0000

    core176: Ship nettle
    
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit 68b8b5fa81dc1ebecec5ee3a671866b1f4324611
Author: Adolf Belka <adolf.belka(a)ipfire.org>
Date:   Fri May 19 13:47:52 2023 +0200

    nettle: Update to version 3.9
    
    - Update from version 3.8.1 to 3.9
    - Update of rootfile
    - Changelog
    NEWS for the Nettle 3.9 release
    	This release includes bug fixes, several new features, a few
    	performance improvements, and one performance regression
    	affecting GCM on certain platforms.
    	The new version is intended to be fully source and binary
    	compatible with Nettle-3.6. The shared library names are
    	libnettle.so.8.7 and libhogweed.so.6.7, with sonames
    	libnettle.so.8 and libhogweed.so.6.
    	This release includes a rewrite of the C implementation of
    	GHASH (dating from 2011), as well as the plain x86_64 assembly
    	version, to use precomputed tables in a different way, with
    	tables always accessed in the same sequential manner.
    	This should make Nettle's GHASH implementation side-channel
    	silent on all platforms, but considerably slower on platforms
    	without carry-less mul instructions. E.g., benchmarks of the C
    	implementation on x86_64 showed a slowdown of 3 times.
    	Bug fixes:
    		* Fix bug in ecdsa and gostdsa signature verify operation, for
    		  the unlikely corner case that point addition really is point
    		  duplication.
    		* Fix for chacha on Power7, nettle's assembly used an
    		  instruction only available on later processors. Fixed by
    		  Mamone Tarsha.
    		* GHASH implementation should now be side-channel silent on
    		  all architectures.
    		* A few portability fixes for *BSD.
    	New features:
    		* Support for the SM4 block cipher, contributed by Tianjia
    	          Zhang.
    		* Support for the Balloon password hash, contributed by Zoltan
    	          Fridrich.
    		* Support for SIV-GCM authenticated encryption mode,
    	          contributed by Daiki Ueno.
    		* Support for OCB authenticated encryption mode.
    		* New exported functions md5_compress, sha1_compress,
    		  sha256_compress, sha512_compress, based on patches from
    		  Corentin Labbe.
    	Optimizations:
    		* Improved sha256 performance, in particular for x86_64 and
    		  s390x.
    		* Use GMP's mpn_sec_tabselect, which is implemented in
    		  assembly on many platforms, and delete the similar nettle
    		  function. Gives a modest speedup to all ecc operations.
    		* Faster poly1305 for x86_64 and ppc64. New ppc code
    		  contributed by Mamone Tarsha.
    	Miscellaneous:
    		* New ASM_FLAGS variable recognized by configure.
    		* Delete all arcfour assembly code. Affects 32-bit x86, 32-bit
    		  and 64-bit sparc.
    	Known issues:
    		* Version 6.2.1 of GNU GMP (the most recent GMP release as of
    		  this writing) has a known issue for MacOS on 64-bit ARM: GMP
    		  assembly files use the reserved x18 register. On this
    		  platform it is recommended to use a GMP snapshot where this
    		  bug is fixed, and upgrade to a later GMP release when one
    		  becomes available.
    		* Also on MacOS, Nettle's testsuite may still break due to
    		  DYLD_LIBRARY_PATH being discarded under some circumstances.
    		  As a workaround, use
    		* make check EMULATOR='env DYLD_LIBRARY_PATH=$(TEST_SHLIB_DIR)'
    
    Signed-off-by: Adolf Belka <adolf.belka(a)ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit dc60a4256a49032cdbf39c98c41c367087583407
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date:   Thu Jun 15 09:35:49 2023 +0000

    core176: Ship libcap
    
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit 177c2c3f353cbd07a60bbea9dac21f002b387614
Author: Adolf Belka <adolf.belka(a)ipfire.org>
Date:   Fri May 19 13:47:51 2023 +0200

    libcap: Update to version 2.69
    
    - Update from version 2.67 to 2.69
    - Update of rootfile
    - Changelog
    Release notes for 2.69
    	2023-05-14 19:10:04 -0700
    	    An audit was performed on libcap and friends by https://x41-dsec.de/
                 https://x41-dsec.de/news/2023/05/15/libcap-source-code-audit/
                 The audit (final report, 2023-05-10)
                  https://drive.google.com/file/d/1lsuC_tQbQ5pCE2Sy_skw0a7hTzQyQh2C/view?usp=sharing
                  was sponsored by the the Open Source Technology Improvement Fund,
                  https://ostif.org/ (blog). Five issues were found. Four of them are
                  addressed in this release. Each issue was labeled in the audit results as
                  follows:
    	        LCAP-CR-23-01 (SEVERITY) LOW (CVE-2023-2602) - found by David Gstir
    	        LCAP-CR-23-02 (SEVERITY) MEDIUM (CVE-2023-2603) - found by Richard Weinberger
    	        LCAP-CR-23-100 (SEVERITY) NONE
    	        LCAP-CR-23-101 (SEVERITY) NONE
    	    Man page style improvement from Emanuele Torre
    	    Partially revive the ability to build the binaries fully statically.
    	        This was needed to make bleeding edge kernel debugging/testing via
                     qemu+busybox work again. Addressing an issue I realized only when I
                     tried to answer this stackexchange question.
                     https://unix.stackexchange.com/questions/741532/launch-process-with-limited-capabilities-on-minimal-busybox-based-system
    Release notes for 2.68
    	2023-03-25 17:03:17 -0700
    	    Force libcap internal functions to be hidden outside the library (Bug 217014)
    	    Expanded the list of man page (links) to all of the supported API functions.
    	        fixed some formatting issues with the libpsx(3) manpage.
    	    Add support for a markdown preamble and postscript when generating .md
                 versions of the man pages (Bug 217007)
    	    psx package clean up
    	        fix some copy-paste errors with TestShared()
    	        added a more complete psx testing into this test as well
    	    cap package clean up
    	        drop an unnecessary use of ", _" in the sources
    	        cleaned up cap.NamedCount documentation
    	    Converted goapps/web/README to .md format and fixed the instructions to
                 indicate go mod tidy is needed.
    	    cap_compare test binary now cleans up after itself (Bug 217018)
    	    Figured out how to cross compile Go programs for arm (i.e. RPi) that use C
                 code, don't use cgo but do use the psx package (all part of investigating
                 bug 216610).
    	    Eliminate use of vendor directory
    
    Signed-off-by: Adolf Belka <adolf.belka(a)ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit d6531fb525cd9101548a1923b4b83d4c7e7bfb8f
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date:   Thu Jun 15 09:35:21 2023 +0000

    core176: Ship harfbuzz
    
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit da63874c75c3afe9e80f6dd4fbb60683024ea004
Author: Adolf Belka <adolf.belka(a)ipfire.org>
Date:   Fri May 19 13:47:50 2023 +0200

    harfbuzz: Update to version 7.3.0
    
    - Update from 7.2.0 to 7.3.0
    - Update of rootfile
    - Changelog
    Overview of changes leading to 7.3.0
        Tuesday, May 9, 2023
    	- Speedup applying glyph variation in VarComposites fonts (over 40% speedup).
    	  (Behdad Esfahbod)
    	- Speedup instancing some fonts (over 20% speedup in instancing RobotoFlex).
    	  (Behdad Esfahbod)
    	- Speedup shaping some fonts (over 30% speedup in shaping Roboto).
    	  (Behdad Esfahbod)
    	- Support subsetting VarComposites and beyond-64k fonts. (Behdad Esfahbod)
    	- New configuration macro HB_MINIMIZE_MEMORY_USAGE to favor optimizing memory
    	  usage over speed. (Behdad Esfahbod)
    	- Supporting setting the mapping between old and new glyph indices during
    	  subsetting. (Garret Rieger)
    	- Various fixes and improvements.
    	  (Behdad Esfahbod, Denis Rochette, Garret Rieger, Han Seung Min, Qunxin Liu)
    	- New API:
    		+hb_subset_input_old_to_new_glyph_mapping()
    
    Signed-off-by: Adolf Belka <adolf.belka(a)ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit 036889a8d2976e9513521c25a4e5a285b7bee754
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date:   Thu Jun 15 09:34:55 2023 +0000

    core176: Ship ethtool
    
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit 646db7b386234563df42be7b777135dca57748c9
Author: Adolf Belka <adolf.belka(a)ipfire.org>
Date:   Fri May 19 13:47:49 2023 +0200

    ethtool: Update to version 6.3
    
    - Update from version 6.2 to 6.3
    - Update of rootfile not required
    - Changelog
    Version 6.3 - May 8, 2023
    	* Feature: PLCA support (--[gs]et-plca-cfg, --get-plca-status)
    	* Feature: MAC Merge layer support (--show-mm, --set-mm)
    	* Feature: pass source of statistics for port stats
    	* Feature: get/set rx push in ringparams (-g and -G)
    	* Feature: coalesce tx aggregation parameters (-c and -C)
    	* Feature: PSE and PD devices (--show-pse, --set-pse)
    	* Fix: minor fixes of help text (--help)
    	* Fix: fix build on systems with older system headers
    	* Fix: fix netlink support when PLCA is not present (no option)
    	* Fix: fixes for issues found with gcc13 -fanalyzer
    	* Fix: fix return code in rxclass_rule_ins (-N)
    	* Fix: more robust argc/argv handling
    
    Signed-off-by: Adolf Belka <adolf.belka(a)ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit 9d189d0f07f88057236eb02b6125e3753e05a556
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date:   Thu Jun 15 09:34:23 2023 +0000

    core176: Ship curl
    
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit 579c5830aa99b4f2d67e5ac7d8688babe8b3caee
Author: Adolf Belka <adolf.belka(a)ipfire.org>
Date:   Fri May 19 13:47:47 2023 +0200

    curl: Update to version 8.1.0
    
    - Update from version 7.88.1 to 8.1.0
    - Update of rootfile not required
    - Changelog
    Fixed in 8.1.0 - May 17 2023
    	Changes:
    	    curl: add --proxy-http2
    	    CURLPROXY_HTTPS2: for HTTPS proxy that may speak HTTP/2
    	    hostip: refuse to resolve the .onion TLD
    	    tool_writeout: add URL component variables
    	Bugfixes:
    	    amiga: Fix CA certificate paths for AmiSSL and MorphOS
    	    autotools: sync up clang picky warnings with cmake
    	    aws-sigv4.d: fix region identifier in example
    	    bufq: simplify since expression is always true
    	    cf-h1-proxy: skip an extra NULL assign
    	    cf-h2-proxy: fix processing ingress to stop too early
    	    cf-socket: add socket recv buffering for most tcp cases
    	    cf-socket: Disable socket receive buffer by default
    	    cf-socket: remove dead code discovered by PVS
    	    cf-socket: turn off IPV6_V6ONLY on Windows if it is supported
    	    checksrc: check for spaces before the colon of switch labels
    	    checksrc: find bad indentation in conditions without open brace
    	    checksrc: fix SPACEBEFOREPAREN for conditions starting with "*"
    	    ci: `-Wno-vla` no longer necessary
    	    CI: fix brew retries on GHA
    	    CI: Set minimal permissions on workflow ngtcp2-quictls.yml
    	    CI: skip Azure for commits which change only GHA
    	    CI: use another glob syntax for matching files on Appveyor
    	    cmake: bring in the network library on Haiku
    	    cmake: do not add zlib headers for openssl
    	    CMake: make config version 8 compatible with 7
    	    cmake: picky-linker fixes for openssl, ZLIB, H3 and more
    	    cmake: set SONAME for SunOS too
    	    cmake: speed up and extend picky clang/gcc options
    	    CMakeLists.txt: fix typo for Haiku detection
    	    compressed.d: clarify the words on "not notifying headers"
    	    config-dos.h: fix SIZEOF_CURL_OFF_T for MS-DOS/DJGPP
    	    configure: don't set HAVE_WRITABLE_ARGV on Windows
    	    configure: fix detection of apxs (for httpd)
    	    configure: make quiche require quiche_conn_send_ack_eliciting
    	    connect: fix https connection setup to treat ssl_mode correctly
    	    content_encoding: only do transfer-encoding compression if asked to
    	    cookie: address PVS nits
    	    cookie: clarify that init with data set to NULL reads no file
    	    curl: do NOT append file name to path for upload when there's a query
    	    curl_easy_getinfo.3: typo fix (duplicated "from the")
    	    curl_easy_unescape.3: rename the argument
    	    curl_path: bring back support for SFTP path ending in /~
    	    curl_url_set.3: mention that users can set content rather freely
    	    CURLOPT_IPRESOLVE.3: this for host names, not IP addresses
    	    data.d: emphasize no conversion
    	    digest: clear target buffer
    	    doc: curl_mime_init() strong easy binding was relaxed in 7.87.0
    	    docs/cmdline-opts: document the dotless config path
    	    docs/examples/protofeats.c: outputs all protocols and features
    	    docs/libcurl/curl_*escape.3: rename "url" argument to "input"/"string"
    	    docs/SECURITY-ADVISORY.md: how to write a curl security advisory
    	    docs: bump the minimum perl version to 5.6
    	    docs: clarify that more backends have HTTPS proxy support
    	    dynbuf: never allocate larger than "toobig"
    	    easy_cleanup: require a "good" handle to act
    	    ftp: fix 'portsock' variable was assigned the same value
    	    ftp: remove dead code
    	    ftplistparser: move out private data from public struct
    	    ftplistparser: replace realloc with dynbuf
    	    gen.pl: error on duplicated See-Also fields
    	    getpart: better handle case of file not found
    	    GHA-linux: add an address-sanitizer build
    	    GHA: add a memory-sanitizer job
    	    GHA: run all linux test jobs with valgrind
    	    GHA: suppress git clone output
    	    GIT-INFO: add --with-openssl
    	    gskit: various compile errors in OS400
    	    h2/h3: replace `state.drain` counter with `state.dselect_bits`
    	    hash: fix assigning same value
    	    headers: clear (possibly) lingering pointer in init
    	    hostcheck: fix host name wildcard checking
    	    hostip: add locks around use of global buffer for alarm()
    	    hostip: enforce a maximum DNS cache size independent of timeout value
    	    HTTP-COOKIES.md: mention the #HttpOnly_ prefix
    	    http2: always EXPIRE_RUN_NOW unpaused http/2 transfers
    	    http2: do flow window accounting for cancelled streams
    	    http2: enlarge the connection window
    	    http2: flow control and buffer improvements
    	    http2: move HTTP/2 stream vars into local context
    	    http2: pass `stream` to http2_handle_stream_close to avoid NULL checks
    	    http2: remove unused Curl_http2_strerror function declaration
    	    HTTP3/quiche: terminate h1 response header when no body is sent
    	    http3: check stream_ctx more thoroughly in all backends
    	    HTTP3: document the ngtcp2/nghttp3 versions to use for building curl
    	    http3: expire unpaused transfers in all HTTP/3 backends
    	    http3: improvements across backends
    	    http: free the url before storing a new copy
    	    http: skip a double NULL assign
    	    ipv4.d/ipv6.d: they are "mutex", not "boolean"
    	    KNOWN_BUGS: remove fixed or outdated issues, move non-bugs
    	    lib/cmake: add HAVE_WRITABLE_ARGV check
    	    lib/sha256.c: typo fix in comment (duplicated "is available")
    	    lib1560: verify that more bad host names are rejected
    	    lib: add `bufq` and `dynhds`
    	    lib: remove CURLX_NO_MEMORY_CALLBACKS
    	    lib: unify the upload/method handling
    	    lib: use correct printf flags for sockets and timediffs
    	    libssh2: fix crash in keyboard callback
    	    libssh2: free fingerprint better
    	    libssh: tell it to use SFTP non-blocking
    	    man pages: simplify the .TH sections
    	    MANUAL.md: add dict example for looking up a single definition
    	    md(4|5): don't use deprecated iOS functions
    	    md4: only build when used
    	    mime: skip NULL assigns after Curl_safefree()
    	    multi: add handle asserts in DEBUG builds
    	    multi: add multi-ignore logic to multi_socket_action
    	    multi: free up more data earleier in DONE
    	    multi: remove a few superfluous assigns
    	    multi: remove PENDING + MSGSENT handles from the main linked list
    	    ngtcp2: adapted to 0.15.0
    	    ngtcp2: adjust config and code checks for ngtcp2 without nghttp3
    	    noproxy: pointer to local array 'hostip' is stored outside scope
    	    ntlm: clear lm and nt response buffers before use
    	    openssl: interop with AWS-LC
    	    OS400: fix and complete ILE/RPG binding
    	    OS400: implement EBCDIC support for recent features
    	    OS400: improve vararg emulation
    	    OS400: provide ILE/RPG usage examples
    	    pingpong: fix compiler warning "assigning an enum to unsigned char"
    	    pytest: improvements for suitable curl and error output
    	    quiche: disable pacing while pacing is not actually performed
    	    quiche: Enable IDLE egress handling
    	    RELEASE-PROCEDURE: update to new schedule
    	    rtsp: convert mallocs to dynbuf for RTP buffering
    	    rtsp: skip malformed RTSP interleaved frame data
    	    rtsp: skip NULL assigns after Curl_safefree()
    	    runtests: die if curl version can be found
    	    runtests: don't start servers if -l is given
    	    runtests: fix -c option when run with valgrind
    	    runtests: fix quoting in Appveyor and Azure test integration
    	    runtests: lots of refactoring
    	    runtests: refactor into more packages
    	    runtests: show error message if file can't be written
    	    runtests: spawn a new process for the test runner
    	    rustls: fix error in recv handling
    	    schannel: add clarifying comment
    	    server/getpart: clear target buffer before load
    	    smb: remove double assign
    	    smbserver: remove temporary files before exit
    	    socketpair: verify with a random value
    	    ssh: Add support for libssh2 read timeout
    	    telnet: simplify the implementation of str_is_nonascii()
    	    test1169: fix so it works properly everywhere
    	    test1592: add flaky keyword
    	    test1960: point to the correct path for the precheck tool
    	    test303: kill server after test
    	    tests/http: add timeout to running curl in test cases
    	    tests/http: fix log formatting on wrong exit code
    	    tests/http: fix out-of-tree builds
    	    tests/http: improved httpd detection
    	    tests/http: more tests with specific clients
    	    tests/http: relax connection check in test_07_02
    	    tests/keywords.pl: remove
    	    tests/libtest/lib1900.c: remove
    	    tests/sshserver.pl: Define AddressFamily earlier
    	    tests: 1078 1288 1297 use valid IPv4 addresses
    	    tests: document that the unittest keyword is special
    	    tests: increase sws timeout for more robust testing
    	    tests: log a too-long Unix socket path in sws and socksd
    	    tests: make test_12_01 a bit more forgiving on connection counts
    	    tests: move pidfiles and portfiles under the log directory
    	    tests: move server config files under the pid dir
    	    tests: silence some Perl::Critic warnings in test suite
    	    tests: stop using strndup(), which isn't portable
    	    tests: switch to 3-argument open in test suite
    	    tests: turn perl modules into full packages
    	    tests: use %LOGDIR to refer to the log directory
    	    tool_cb_hdr: Fix 'Location:' formatting for early VTE terminals
    	    tool_operate: pass a long as CURLOPT_HEADEROPT argument
    	    tool_operate: refuse (--data or --form) and --continue-at combo
    	    transfer: refuse POSTFIELDS + RESUME_FROM combo
    	    transfer: skip extra assign
    	    url: fix null dispname for --connect-to option
    	    url: fix PVS nits
    	    url: remove call to Curl_llist_destroy in Curl_close
    	    urlapi: cleanups and improvements
    	    urlapi: detect and error on illegal IPv4 addresses
    	    urlapi: prevent setting invalid schemes with *url_set()
    	    urlapi: skip a pointless assign
    	    urlapi: URL encoding for the URL missed the fragment
    	    urldata: copy CURLOPT_AWS_SIGV4 value on handle duplication
    	    urldata: shrink *select_bits int => unsigned char
    	    vlts: use full buffer size when receiving data if possible
    	    vtls and h2 improvements
    	    Websocket: enhanced en-/decoding
    	    wolfssl.yml: bump to version 5.6.0
    	    write-out.d: Use response_code in example
    	    ws: handle reads before EAGAIN better
    Fixed in 8.0.1 - March 20 2023
    	Bugfixes:
    	    fix crash in curl_easy_cleanup
    Fixed in 8.0.0 - March 20 2023
    	Changes:
    	    build: remove support for curl_off_t < 8 bytes
    	Bugfixes:
    	    .cirrus.yml: Bump to FreeBSD 13.2
    	    aws_sigv4: fall back to UNSIGNED-PAYLOAD for sign_as_s3
    	    BINDINGS: add Fortran binding
    	    build: drop the use of XC_AMEND_DISTCLEAN
    	    build: fix stdint/inttypes detection with non-autotools
    	    cf-socket: fix handling of remote addr for accepted tcp sockets
    	    cf-socket: if socket is already connected, return CURLE_OK
    	    cf-socket: use port 80 when resolving name for local bind
    	    CI: don't run CI jobs if only another CI was changed
    	    CI: update ngtcp2 and nghttp2 for pytest
    	    cmake: delete unused HAVE__STRTOI64
    	    cmake: fix enabling LDAPS on Windows
    	    cmake: skip CA-path/bundle auto-detection in cross-builds
    	    connect: fix time_connect and time_appconnect timer statistics
    	    cookie: don't load cookies again when flushing
    	    cookie: parse without sscanf()
    	    curl.h: require gcc 12.1 for the deprecation magic
    	    curl: make -w's %{stderr} use the file set with --stderr
    	    curl_path: create the new path with dynbuf
    	    CURLOPT_PIPEWAIT: allow waited reuse also for subsequent connections
    	    CURLOPT_PROXY.3: curl+NSS does not handle HTTPS over unix domain socket
    	    CURLSHOPT_SHARE.3: HSTS sharing is not thread-safe
    	    DEPRECATE: the original legacy mingw version 1
    	    doc: fix compiler warning in libcurl.m4
    	    docs/cmdline-opts: mark all global options
    	    docs/SECURITY-PROCESS.md: updates
    	    docs: extend the URL API descriptions
    	    docs: note '--data-urlencode' option
    	    DYNBUF.md: note Curl_dyn_add* calls Curl_dyn_free on failure
    	    easy: remove infof() debug leftover from curl_easy_recv
    	    examples/http3.c: use CURL_HTTP_VERSION_3
    	    ftp: active mode with SSL, add the filter
    	    ftp: add more conditions for connection reuse
    	    ftp: allocate the wildcard struct on demand
    	    ftp: make the EPSV response parser not use sscanf
    	    ftp: replace sscanf for MDTM 213 response parsing
    	    ftp: replace sscanf for PASV parsing
    	    gssapi: align `gss_OID_desc` to silence ld warnings on macOS ventura
    	    headers: make curl_easy_header and nextheader return different buffers
    	    hostip: avoid sscanf and extra buffer copies
    	    http2: fix error handling during parallel operations
    	    http2: fix for http2-prior-knowledge when reusing connections
    	    http2: fix handling of RST and GOAWAY to recognize partial transfers
    	    http2: fix upload busy loop
    	    http: don't send 100-continue for short PUT requests
    	    http: fix unix domain socket use in https connects
    	    http: rewrite the status line parser without sscanf
    	    http_proxy: parse the status line without sscanf
    	    idn: return error if the conversion ends up with a blank host
    	    krb5: avoid sscanf for parsing
    	    lib1560: test parsing URLs with ridiculously large fields
    	    lib2305: deal with CURLE_AGAIN
    	    lib517: verify time stamps without leading zeroes plus some more
    	    lib: silence clang/gcc -Wvla warnings in brotli headers
    	    lib: skip Curl_llist_destroy calls
    	    libcurl-errors.3: add the CURLHcode errors from curl_easy_header.3
    	    libssh2: only set the memory callbacks when debugging
    	    libssh2: remove unused variable from libssh2's struct
    	    libssh: use dynbuf instead of realloc
    	    Makefile.mk: delete redundant `HAVE_LDAP_SSL` macro
    	    Makefile.mk: fix -g option in debug mode
    	    mqtt: on send error, return error
    	    multi: make multi_perform ignore/unignore signals less often
    	    multi: remove PENDING + MSGSENT handles from the main linked list
    	    ngtcp2-gnutls.yml: bump to gnutls 3.8.0
    	    ngtcp2: fix unwanted close of file descriptor 0
    	    page-footer: add explanation for three missing exit codes
    	    parsedate: parse strings without using sscanf()
    	    parsedate: replace sscanf( for time stamp parsing
    	    quic/schannel: fix compiler warnings
    	    rand: use arc4random as fallback when available
    	    rate.d: single URLs make no sense in --rate example
    	    RELEASE-PROCEDURE.md: update coming release dates
    	    rtsp: avoid sscanf for parsing
    	    runtests: use a hash table for server port numbers
    	    sectransp: fix compiler warning c89 mixed code/declaration
    	    sectransp: make read_cert() use a dynbuf when loading
    	    secure-transport: fix recv return code handling
    	    select: stop treating POLLRDBAND as an error
    	    setopt: move the CURLOPT_CHUNK_DATA pointer to the set struct
    	    socket: detect "dead" connections better, e.g. not fit for reuse
    	    src: silence wmain() warning for all build methods
    	    telnet: only accept option arguments in ascii
    	    telnet: parse NEW_ENVIRON without sscanf
    	    telnet: parse telnet options without sscanf
    	    telnet: parse the WS= argument without sscanf
    	    test1470: test socks proxy using unix sockets and connect to https
    	    test1960: verify CURL_SOCKOPT_ALREADY_CONNECTED
    	    test2600: detect when ALARM_TIMEOUT is in use and adjust
    	    test422: verify --next used without a prior URL
    	    tests/http: add pytest to GHA and improve tests
    	    tests: add `cookies` features
    	    tests: add timeout, SLOWDOWN and DELAY keywords to tests
    	    tests: fix gnutls-serv check
    	    tests: fix MSVC unreachable code warnings in unit tests
    	    tests: hack to build most unit tests under cmake
    	    tests: HTTP server fixups
    	    tests: keep cmake unit tests names in sync
    	    tests: make CPPFLAGS common to all unit tests
    	    tests: make first.c the same for both lib tests and unit tests
    	    tests: support for imaps/pop3s/smtps protocols
    	    tests: sync option lists in runtests.pl & its man page
    	    tests: test secure mail protocols with explicit SSL requests
    	    tests: use AM_CPPFILES to modify flags in unit tests
    	    tests: use dynamic ports numbers in pytest suite
    	    tool: dump headers even if file is write-only
    	    tool: improve --stderr handling
    	    tool_getparam: don't add a new node for just --no-remote-name
    	    tool_getparam: error if --next is used without a prior URL
    	    tool_operate: avoid fclose(NULL) on bad header dump file
    	    tool_operate: propagate error codes for missing URL after --next
    	    tool_progress: shut off progress meter for --silent in parallel
    	    tool_writeout_json. fix the output for duplicate header names
    	    transfer: limit Windows SO_SNDBUF updates to once a second
    	    url: fix cookielist memleak when curl_easy_reset
    	    url: fix logic in connection reuse to deny reuse on "unclean" connections
    	    url: fix the SSH connection reuse check
    	    url: only reuse connections with same GSS delegation
    	    url: remove dummy protocol handler
    	    urlapi: '%' is illegal in host names
    	    urlapi: avoid mutating internals in getter routine
    	    urlapi: parse IPv6 literals without ENABLE_IPV6
    	    urlapi: take const args in _dup and _get functions
    	    wildcard: remove files and move functions into ftplistparser.c
    	    winbuild: fix makefile clean
    	    wolfssl: add quic/ngtcp2 detection in cmake, and fix builds
    	    wolfSSL: ressurect the BIO `io_result`
    	    ws: keep the socket non-blocking
    	    x509asn1.c: use correct format specifier for infof() call
    	    x509asn1: use plain %x, not %lx, when the arg is an int
    
    Signed-off-by: Adolf Belka <adolf.belka(a)ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit 237e84837eefb20230ee1f3a03ab22c674db30cd
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date:   Thu Jun 15 09:33:51 2023 +0000

    core176: Ship whois
    
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit 642e18d96b5e5eed9e63d9ad3047613c1033a1d4
Author: Adolf Belka <adolf.belka(a)ipfire.org>
Date:   Thu May 18 20:43:28 2023 +0200

    whois: Update to version 5.5.17
    
    - Update from version 5.5.13 to 5.5.17
    - Update of rootfile not required
    - Previous versions of whois were taken from debian files. However these are taken from
       the whois github page and then repackaged from gz to xz. It therefore seemed sensible
       to me that we should take the source from this package from the github repo that
       the developer is using. Therefore some changes to naming convention of the source file.
    - Changelog
    	whois (5.5.17) unstable; urgency=medium
    	  * Added the .cd TLD server.
    	  * Updated the -kg NIC handles server name.
    	  * Removed 2 new gTLDs which are no longer active.
    	whois (5.5.16) unstable; urgency=medium
    	  * Add bash completion support, courtesy of Ville Skyttä.
    	  * Updated the .tr TLD server.
    	  * Removed support for -metu NIC handles.
    	whois (5.5.15) unstable; urgency=medium
    	  * Updated the .bd, .nz and .tv TLD servers.
    	  * Added the .llyw.cymru, .gov.scot and .gov.wales SLD servers.
    	  * Updated the .ac.uk and .gov.uk SLD servers.
    	  * Recursion has been enabled for whois.nic.tv.
    	  * Updated the list of new gTLDs with four generic TLDs assigned in
    	    October 2013 which were missing due to a bug.
    	  * Removed 4 new gTLDs which are no longer active.
    	  * Added the Georgian translation, contributed by Temuri Doghonadze.
    	  * Updated the Finnish translation, contributed by Lauri Nurmi.
    	whois (5.5.14) unstable; urgency=medium
    	  * Added the .bf and .sd TLD servers.
    	  * Removed the .gu TLD server.
    	  * Updated the .dm, .fj, .mt and .pk TLD servers.
    	  * Updated the charset for whois.nic.tr.
    	  * Updated the list of new gTLDs.
    	  * Removed whois.nic.fr from the list of RIPE-like servers, because it
    	    is not one anymore. (Closes: #1021110)
    	  * Renamed whois.arnes.si to whois.register.si in the list of RIPE-like
    	    servers.
    	  * Added the hiding string for whois.auda.org.au.
    	  * Fixed uclibc builds, because uclibc does not have NLS support.
    
    Signed-off-by: Adolf Belka <adolf.belka(a)ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit 7adec7d392244e33d202bacf0d8955edaa55007b
Author: Adolf Belka <adolf.belka(a)ipfire.org>
Date:   Thu May 18 20:43:27 2023 +0200

    texinfo: Update to version 7.0.3
    
    - Update from version 7.0.2 to 7.0.3
    - Update of rootfile not required
    - Changelog
        7.0.3 (26 March 2023)
    	This is a bug-fix release with minimal changes.
    	* texi2any
    	  . fix performance regression when Perl binary extension (XS) modules
    	    are not being used (e.g. with TEXINFO_XS=omit)
    	* info
    	  . further fix of recoding of UTF-8 files to ASCII to avoid text
    	    disappearing from nodes
    	  . avoid possible freeze at start of a file with `-v nodeline=pointers'
    
    Signed-off-by: Adolf Belka <adolf.belka(a)ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit 50ae4dcc50d2bc70b8afe8f98553d822328775b9
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date:   Thu Jun 15 09:32:52 2023 +0000

    core176: Ship sqlite
    
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit 9cd5350f0a16c78886ebca6e9d95c849af04bb33
Author: Adolf Belka <adolf.belka(a)ipfire.org>
Date:   Thu May 18 20:43:26 2023 +0200

    sqlite: Update to version 3420000
    
    - Update from version 3410200 to 3420000
    - Update of rootfile not required
    - Changelog is mostly new functions but there are also a range of unnamed bug fixes and
       performance improvements
        version 3420000
    	Add the FTS5 secure-delete command. This option causes all forensic traces to be removed from the FTS5 inverted index when content is deleted.
    	Enhance the JSON SQL functions to support JSON5 extensions.
    	The SQLITE_CONFIG_LOG and SQLITE_CONFIG_PCACHE_HDRSZ calls to sqlite3_config() are now allowed to occur after sqlite3_initialize().
    	New sqlite3_db_config() options: SQLITE_DBCONFIG_STMT_SCANSTATUS and SQLITE_DBCONFIG_REVERSE_SCANORDER.
    	Query planner improvements:
    	    Enable the "count-of-view" optimization by default.
    	    Avoid computing unused columns in subqueries.
    	    Improvements to the push-down optimization.
    	Enhancements to the CLI:
    	    Add the --unsafe-testing command-line option. Without this option, some dot-commands (ex: ".testctrl") are now disabled because those commands that are intended for testing only and can cause malfunctions misused.
    	    Allow commands ".log on" and ".log off", even in --safe mode.
    	    "--" as a command-line argument means all subsequent arguments that start with "-" are interpreted as normal non-option argument.
    	    Magic parameters ":inf" and ":nan" bind to floating point literals Infinity and NaN, respectively.
    	    The --utf8 command-line option omits all translation to or from MBCS on the Windows console for interactive sessions, and sets the console code page for UTF-8 I/O during such sessions. The --utf8 option is a no-op on all other platforms.
    	Add the ability for application-defined SQL functions to have the same name as join keywords: CROSS, FULL, INNER, LEFT, NATURAL, OUTER, or RIGHT.
    	Enhancements to PRAGMA integrity_check:
    	    Detect and raise an error when a NaN value is stored in a NOT NULL column.
    	    Improved error message output identifies the root page of a b-tree when an error is found within a b-tree.
    	Allow the session extension to be configured to capture changes from tables that lack an explicit ROWID.
    	Added the subsecond modifier to the date and time functions.
    	Negative values passed into sqlite3_sleep() are henceforth interpreted as 0.
    	The maximum recursion depth for JSON arrays and objects is lowered from 2000 to 1000.
    	Extended the built-in printf() function so the comma option now works with floating-point conversions in addition to integer conversions.
    	Miscellaneous bug fixes and performance optimizations
    
    Signed-off-by: Adolf Belka <adolf.belka(a)ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit 9f6251e13bbcdea200cf890638c7edfa33b43223
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date:   Thu Jun 15 09:32:18 2023 +0000

    core176: Ship procps
    
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit b1c5bde6c7074b33610987cbae34561f318845cf
Author: Adolf Belka <adolf.belka(a)ipfire.org>
Date:   Thu May 18 20:43:25 2023 +0200

    procps: Update to version v4.0.3
    
    - Update from version v4.0.0 to v4.0.3
    - Update of rootfile
    - Changed souce from gz to bz2
    - Changelog
        procps-ng-4.0.3
    	  * library
    	    Only changes were in copyright headers and tests
    	  * docs: Don't install English manpages twice
    	  * pgrep: Add -H match on userspace signal handler        merge #165
    	  * pgrep: make --terminal respect other criteria
    	  * ps: c flag shows command name again                    Debian #1026326
    	  * ps.1: Match drs description from top.1                 merge #156
    	  * skill: Match on -p again                               Debian #1025915
    	  * top: E/P-core toggle ('5' key) added to help
    	  * vmstat: Referesh memory statistics                     Debian #1027963
    	  * vmstat: Fix initial si,so,bi,bo,in & cs values         issue #15
    	                                                           Debian #668580
    	  * vmstat: Fix conversion errors due to precision         merge #75
    	  * w: Add --pids option                                   merge #159
    	  * watch: Pass through beep                               issue #104
    	  * watch: -r option to not re-exec on SIGWINCH            merge #125
    	  * watch: find eol with --no-linewrap                     merge #157
        procps-ng-4.0.2
    	  * library revision - 0:1:0
    	    Handle absent 'core_id' in /proc/cpuinfo
    	  * w: Show time with D_TIME_BITS=64 on 32bit env          issue #256
        procps-ng-4.0.1
    	  * library
    	    Re-add elogind support                                 merge #151
    	    Used memory is Total - Available
    	    Renaming, it is now libproc2
    	  * free: Use --kilo when only specifying --si             merge #163
    	  * pgrep: Add -A to ignore ancestors                      merge #160
    	  * pidwait: Better warning if pidfd_open not implemented
    	  * pmap: Dont reuse stdin filehandle                      issue #231
    	  * ps: threads again display when -L is used with -q      issue #234
    	  * ps: proper aix format string behavior was restored
    	  * sysctl: print dotted keys again
    	  * top: fix 'smaps' bug preventing build under clang      issue #235
    	  * top: column highlighting allowed under 'L' or 'O'
    	  * top: can alter autogroup nice value (like 'r' renice)
    	  * top: can display the following with no need to scroll
    	  *      cmdline, control groups, environment,
    	         supplimentary groups, namespaces
    	  * top: adds a 'message log' recall capability
    	  * top: will accept utf8 multi-byte input with support
    	         for full line editing and previous line recall
    	  * top: can show more than 2 abreast in summary display
    	  * top: can distinguish P-Core and E-core cpus
    	  * top: can filter both P-Core and E-core cpus
    	  * watch: Add equexit no-change and exit option           merge #153
    
    Signed-off-by: Adolf Belka <adolf.belka(a)ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit b5661ddc236ab814a0bd31142af3b8e5dd4c2613
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date:   Thu Jun 15 09:31:39 2023 +0000

    core176: Ship man
    
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit 7bff30a8ba0c07b7ea1afc49a27f1b527f8a7869
Author: Adolf Belka <adolf.belka(a)ipfire.org>
Date:   Thu May 18 20:43:24 2023 +0200

    man: Update to version 2.11.2
    
    - Update from version 2.10.2 to 2.11.2
    - Update of rootfile
    - Changelog
    man-db 2.11.2 (8 January 2023)
    	Fixes:
    	 * Fix compile and test failures when `troff` is not `groff`.
    	 * Fix segfault in typical uses of `man` when `nroff` is not installed.
    	 * Fix crash in `mandb` when processing stray cats.
    	Improvements:
    	 * Check for stray cats even if no manual pages in a given manpath were
    	   changed.
    man-db 2.11.1 (15 November 2022)
    	Build:
    	 * Transfer Git repository to https://gitlab.com/man-db/man-db.
    	Fixes:
    	 * SECURITY: Replace `$` characters in page names with `?` when constructing
    	   `less` prompts.
    	 * Silence error message when processing an empty manual page hierarchy with
    	   a nonexistent cache directory.
    	 * `man(1)` now sorts whatis references below real pages, even if the whatis
    	   references are from a section with higher priority.
    	Improvements:
    	 * Add section `3type` to the default section list just after `2`.  This is
    	   used by the Linux man-pages package.
    	 * Recognize more Hungarian translations of the `NAME` section.
    man-db 2.11.0 (15 October 2022)
    	Fixes:
    	 * `mandb` now correctly records filters in the database if it uses cached
    	   whatis information.
    	 * Upgrade Gnulib, fixing syntax error on glibc systems with GCC 11.
    	 * The `CATWIDTH` configuration file directive now overrides `MINCATWIDTH`
    	   and `MAXCATWIDTH`.
    	 * Database entries for links were often incorrectly stored as if they were
    	   entries for the ultimate source of the page.  They are now stored with
    	   the correct type.
    	 * Store links in the database using the section and extension of the link
    	   rather than of the ultimate source file.
    	 * Consider pages for adding to the database even if they seem to already
    	   exist; this performance optimization is no longer needed due to caching,
    	   and it produced inconsistent results in some unusual cases.
    	 * `man` now runs any required preprocessors in the same order that `groff`
    	   does, rather than trusting the order of filters in a page's preprocessor
    	   string.
    	 * Fix building on MinGW.  (I haven't been able to test this; help from
    	   MinGW experts would be welcome.)
    	Improvements:
    	 * Add more recognized case variants for localized versions of the `NAME`
    	   section.
    	 * Maintain multi keys in sorted order, improving database reproducibility.
    	 * Pick a more consistent name for the target of a whatis entry in the
    	   database.
    	 * Extend rules for when to replace one database entry with another,
    	   producing more stable behaviour.
    	 * Fully reorganize databases after writing them, allowing the reproduction
    	   of bitwise-identical databases regardless of scan order (at least with
    	   GDBM).
    
    Signed-off-by: Adolf Belka <adolf.belka(a)ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit 0bead24b3dce225aba3db047a1349965b6ea812a
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date:   Thu Jun 15 09:31:16 2023 +0000

    core176: Ship less
    
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit 730fa3189bd691c9a0ffaf3f83ee4cc554903ad9
Author: Adolf Belka <adolf.belka(a)ipfire.org>
Date:   Thu May 18 20:43:23 2023 +0200

    less: Update to version 633
    
    - Update from version 608 to 633
    - Update of rootfile not required
    - Changelog
        Major changes between "less" versions 632 and 633
    	* Fix build on systems which have ncurses/termcap.h or
    	  ncursesw/termcap.h but not termcap.h.
        Major changes between "less" versions 608 and 632
    	* Add LESSUTFCHARDEF environment variable (github #275).
    	* Add # command (github #330).
    	* Add ^S search modifier (github #196).
    	* Add --wordwrap option (github #113).
    	* Add --no-vbell option (github #304).
    	* Add --no-search-headers option (github #44).
    	* Add --modelines option (github #89).
    	* Add --intr option (github #224).
    	* Add --proc-backspace, --proc-tab and --proc-return options (github #335).
    	* Add --show-preproc-errors option (github #258).
    	* Add LESS_LINES and LESS_COLUMNS environment variables (github #84).
    	* Add LESS_DATA_DELAY environment variable (github #337).
    	* Allow empty "lines" field in --header option.
    	* Update Unicode tables.
    	* Improve ability of ^X to interrupt F command (github #49).
    	* Status column (-J) shows off-screen matches.
    	* Parenthesized sub-patterns in searches are colored with unique colors,
    	  if supported by the regular expression library (github #196).
    	* Don't allow opening a tty as file input unless -f is set (github #309).
    	* Don't require newline input after +&... option (github #339).
    	* Fix incorrect handling of some Private Use Unicode characters.
    	* Fix ANSI color bug when overstriking with colored chars (github #276).
    	* Fix compiler const warning (github #279).
    	* Fix signal race in iread (github #280).
    	* Fix reading procfs files on Linux (github #282).
    	* Fix --ignore-case with ctrl-R (no regex) search (github #300).
    	* Fix bug doing repeat search after setting & filter (github #299).
    	* Fix bug doing repeat search before non-repeat search.
    	* Fix crash with -R and certain line lengths (github #338).
    	* Fix input of Windows dead keys (github #352).
    	* Don't retain search options from a cancelled search (github #302).
    	* Don't call realpath on fake filenames like "-" (github #289).
    	* Implement lesstest test suite.
    	* Convert function parameter definitions from K&R to C89 (github #316).
    
    Signed-off-by: Adolf Belka <adolf.belka(a)ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit ca744e25d0c6a0ccfdfa63ee557675b1ae1e69b1
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date:   Thu Jun 15 09:30:48 2023 +0000

    core176: Ship grep
    
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit 0919eca9dd71e33bdd7f92ae5372d945fbc2649a
Author: Adolf Belka <adolf.belka(a)ipfire.org>
Date:   Thu May 18 20:43:22 2023 +0200

    grep: Update to version 3.11
    
    - Update from version 3.10 to 3.11
    - Update of rootfile not required
    - Changelog
    * Noteworthy changes in release 3.11 (2023-05-13) [stable]
    	** Bug fixes
    	  With -P, patterns like [\d] now work again.  Fixing this has caused
    	  grep to revert to the behavior of grep 3.8, in that patterns like \w
    	  and \b go back to using ASCII rather than Unicode interpretations.
    	  However, future versions of GNU grep and/or PCRE2 are likely to fix
    	  this and change the behavior of \w and \b back to Unicode again,
    	  without breaking [\d] as 3.10 did.
    	  [bug introduced in grep 3.10]
    
    	  grep no longer fails on files dated after the year 2038,
    	  when running on 32-bit x86 and ARM hosts using glibc 2.34+.
    	  [bug introduced in grep 3.9]
    
    	  grep -P no longer fails to match patterns using negated classes
    	  like \D or \W when linked with PCRE2 10.34 or newer.
    	  [bug introduced in grep 3.8]
    	** Changes in behavior
    	  grep --version now prints a line describing the version of PCRE2 it uses.
    	  For example, it prints this when built with the very latest from git:
    	    grep -P uses PCRE2 10.43-DEV 2023-04-14
    	  or this with what's currently available in Fedora 37:
    	    grep -P uses PCRE2 10.40 2022-04-14
    
    	  previous versions of grep wouldn't respect the user provided settings for
    	  PCRE_CFLAGS and PCRE_LIBS when building if a libpcre2-8 pkg-config module
    	  was found.
    
    Signed-off-by: Adolf Belka <adolf.belka(a)ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit a8c72d6f5a6575b828192f3edbce3a4ac3e9f068
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date:   Thu Jun 15 09:29:48 2023 +0000

    core176: Ship gawk
    
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit c06f8d94a438a2243f75698523e623882b496fd1
Author: Adolf Belka <adolf.belka(a)ipfire.org>
Date:   Thu May 18 20:43:20 2023 +0200

    gawk: Update to vesrion 5.2.2
    
    - Update from version 5.1.1 to 5.2.2
    - Update of rootfile
    - Changelog
    Changes from 5.2.1 to 5.2.2
    	1. Infrastructure upgrades: makeinfo 7.0.1 must be used to format
    	   the manual.  As a result, the manual can also now be formatted
    	   with LaTeX by running it through `makeinfo --latex'.
    	2. Gawk no longer builds an x86_64 executable on M1 macOS systems.
    	   This means that PMA is unavailable on those systems.
    	3. Gawk will now diagnose if a heap file was created with a different
    	   setting of -M/--bignum than in the current invocation and exit with
    	   a fatal message if so.
    	4. Gawk no longer "leaks" its free list of NODEs in the heap file, resulting
    	   in much more efficient usage of persistent storage.
    	5. PROCINFO["pma"] exists if the PMA allocator is compiled into gawk.
    	   Its value is the PMA version.
    	6. The time extension is no longer deprecated. The strptime() function
    	   from gawkextlib's timex extension has been added to it.
    	7. Better information is passed to input parsers for when they want to
    	   decide whether or not to take control of a file. In particular, the
    	   readdir extension is simplified for Windows because of this.
    	8. The various PNG files are now installed for Info and HTML. The
    	   images files now have gawk_ prefixed names to avoid any conflicts
    	   with other installed PNG file names.
    	9. As usual, there have been several minor code cleanups and bug fixes.
    	   See the ChangeLog for details.
    Changes from 5.2.0 to 5.2.1
    	1. Infrastructure upgrades: PMA version Avon 8.
    	2. Issues related to the sign of NaN and Inf values on RiscV have
    	   been fixed; gawk now gives identical results on that platform as
    	   it does on others.
    	3. A few issues with the debugger have been fixed.
    	4. More subtle issues with untyped array elements being passed to
    	   functions have been fixed.
    	5. The rwarray extension's readall() function has had some bugs fixed.
    	6. The PMA allocator is now supported on FreeBSD, OpenBSD and Linux on S/390x.
    	   It is now supported also on both Intel and M1 macOS systems.
    	7. There have been several minor code cleanups and bug fixes. See the
    	   ChangeLog for details.
    Changes from 5.1.x to 5.2.0
    	*****************************************************************************
    	* MPFR mode (the -M option) is now ON PAROLE.  This feature is now being    *
    	* supported by a volunteer in the development team and not by the primary   *
    	* maintainer.  If this situation changes, then the feature will be removed. *
    	* For more information see this section in the manual:                      *
    	* https://www.gnu.org/software/gawk/manual/html_node/MPFR-On-Parole.html    *
    	*****************************************************************************
    	1. Infrastructure upgrades: Libtool 2.4.7, Bison 3.8.2.
    	2. Numeric scalars now compare in the same way as C for the relational
    	   operators. Comparison order for sorting has not changed.  This only
    	   makes a difference when comparing Infinity and NaN values with
    	   regular numbers; it should not be noticeable most of the time.
    	3. If the AWK_HASH environment variable is set to "fnv1a" gawk will
    	   use the FNV1-A hash function for associative arrays.
    	4. The CMake infrastructure has been removed. In the five years it was in
    	   the tree, nobody used it, and it was not updated.
    	5. There is now a new function, mkbool(), that creates Boolean-typed
    	   values.  These values *are* numbers, but they are also tagged as
    	   Boolean. This is mainly for use with data exchange to/from languages
    	   or environments that support real Boolean values. See the manual
    	   for details.
    	6. As BWK awk has supported interval expressions since 2019, they are
    	   now enabled even if --traditional is supplied. The -r/--re-interval option
    	   remains, but it does nothing.
    	7. The rwarray extension has two new functions, writeall() and readall(),
    	   for saving / restoring all of gawk's variables and arrays.
    	8. The new `gawkbug' script should be used for reporting bugs.
    	9. The manual page (doc/gawk.1) has been considerably reduced in size.
    	   Wherever possible, details were replaced with references to the online
    	   copy of the manual.
    	10. Gawk now supports Terence Kelly's "persistent malloc" (pma),
    	    allowing gawk to preserve its variables, arrays and user-defined
    	    functions between runs. THIS IS AN EXPERIMENTAL FEATURE!
    	    For more information, see the manual. A new pm-gawk.1 man page
    	    is included, as is a separate user manual that focuses on the feature.
    	11. Support for OS/2 has been removed. It was not being actively
    	    maintained.
    	12. Similarly, support for DJGPP has been removed. It also was not
    	    being actively maintained.
    	13. VAX/VMS is no longer supported, as it can no longer be tested.
    	    The files for it remain in the distribution but will be removed
    	    eventually.
    	14. Some subtle issues with untyped array elements being passed to
    	    functions have been fixed.
    	15. Syntax errors are now immediately fatal. This prevents problems
    	    with errors from fuzzers and other such things.
    	16. There have been numerous minor code cleanups and bug fixes. See the
    	    ChangeLog for details.
    Changes from 5.1.1 to 5.1.x
    	1. Infrastructure upgrades: Automake 1.16.5, Texinfo 6.8.
    	2. The rwarray extension now supports writing and reading GMP and
    	   MPFR values. As a result, a bug in the API code was fixed.
    
    Signed-off-by: Adolf Belka <adolf.belka(a)ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit e0d59c61dd9771de79bd558800586823faee34be
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date:   Thu Jun 15 09:28:50 2023 +0000

    core176: Ship ed
    
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit 9a7aea8b32cd9792002e5db09f72e691d7fae96a
Author: Adolf Belka <adolf.belka(a)ipfire.org>
Date:   Thu May 18 20:43:19 2023 +0200

    ed: Update to version 1.19
    
    - Update from version 1.17 to 1.19
    - Update of rootfile not required
    - Changelog
    2023-01-11  Antonio Diaz Diaz  <antonio(a)gnu.org>
    * Version 1.19 released.
    	* main_loop.c (exec_command): Fix commands 'e', 'E'; they did set
    	  the 'modified' flag if file not found. (Reported by Harry Graf).
    	  (main_loop): Print script error line to stdout instead of stderr.
    	* Change long name of option '-s' to '--script'.
    	  (Suggested by Andrew L. Moore).
    	* Assign short name '-q' to options '--quiet' and '--silent'.
    	* main.c (show_strerror) Use '!quiet' to enable diagnostics.
    	* Do not process file names for backslash escapes.
    	  (Suggested by Andrew L. Moore).
    	* ed.texi: Document 0 as starting point for searches '0;/RE/'.
    	  Document how to achieve the effect of ex style '!' filtering.
    2022-02-04  Antonio Diaz Diaz  <antonio(a)gnu.org>
    * Version 1.18 released.
    	* main_loop.c (get_shell_command): Flush stdout after printing cmd.
    	  (Reported by Sören Tempel).
    	* signal.c (sighup_handler): Fix a memory leak just before exiting.
    	* carg_parser.c (ap_init): Likewise.
    	  (Both reported by Xosé Vázquez Pérez).
    	* io.c (read_file, write_file): Check ptr returned by strip_escapes.
    	* main_loop.c (get_shell_command, exec_command): Likewise.
    	* main_loop.c (get_shell_command): Remove backslash from escaped '%'.
    	  (Reported by Martin Thomsen).
    	* main_loop.c, regex.c: Implement case-insensitive REs.
    	* regex.c (compile_regex): Don't overwrite previous regex if error.
    	* main.c: New option '--strip-trailing-cr'.
    	* buffer.c (push_undo_atom): Fail if stack grows larger than INT_MAX.
    	  (too_many_lines): Fail if buffer grows larger than INT_MAX lines.
    	* global.c (set_active_node): Fail if list grows larger than INT_MAX.
    	* signal.c (resize_buffer): Fail if a line grows longer than INT_MAX.
    	* io.c (read_file): Return -2 for fatal errors.
    	* main_loop.c (main_loop): Set error status if fatal error from main.
    	* main.c [restricted_]: New message "Directory access restricted".
    	* ed.texi: New chapter "The 's' Command".
    	* COPYING: Restored. (I forgot to do it in 1.11).
    	* TODO: Removed.
    
    Signed-off-by: Adolf Belka <adolf.belka(a)ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit 2eda545fc75410106b6acf663a6d2751c795d4ad
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date:   Thu Jun 15 09:28:19 2023 +0000

    core176: Ship diffutils
    
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit a75ec91d070571e455713a2d7ff2844e7efcd979
Author: Adolf Belka <adolf.belka(a)ipfire.org>
Date:   Thu May 18 20:43:18 2023 +0200

    diffutils: Update to version 3.9
    
    - Update from version 3.8 to 3.9
    - Update of rootfile not required
    - Changelog
    version 3.9
    	* NEWS: Record release date.
    
    	build: update gnulib to latest
    
    2023-01-05  Jim Meyering  <meyering(a)fb.com>
    	tests: avoid large-subopt XPASS on systems without perl
    	* tests/large-subopt: Use $PERL, rather than hard-coding "perl".
    	* bootstrap.conf (gnulib_modules): Add "perl" to the list.
    	Reported by Bruno Haible in
    	https://lists.gnu.org/r/diffutils-devel/2023-01/msg00000.html
    
    2023-01-05  Bruno Haible  <bruno(a)clisp.org>
    	tests: avoid a test failure when using Solaris 11.4's old grep
    	* tests/colors (nanosecond_zeros): Use a dumbed-down grep '\.'
    	in place of "grep -F ." to accommodate Solaris 11.4's old versions
    	of grep in the default PATH. Reported here:
    	https://lists.gnu.org/r/diffutils-devel/2023-01/msg00001.html
    
    2023-01-01  Jim Meyering  <meyering(a)fb.com>
    	build: update gnulib to latest
    
    	maint: update copyright dates
    
    2022-12-31  Paul Eggert  <eggert(a)cs.ucla.edu>
    	build: simplify GCC 12 false alarm workaround
    	* src/util.c (print_message_queue): Pacify GCC in a
    	more-straightforward way.
    
    	maint: fix assumption typo
    	Fix a typo I introduced in my August 2021 signal handling fixes.
    	Problem reported by Sam James (Bug#60457).
    	* src/util.c (xsigismember): Don’t assume sigismember cannot return 0.
    
    2022-12-30  Jim Meyering  <meyering(a)fb.com>
    	build: update gnulib to latest
    
    	build: temp?-disable -Wanalyzer-use-of-uninitialized-value
    	* src/util.c (print_message_queue): This function triggers false
    	positive warnings from GCC12, so add pragmas to ignore that new warning
    	in this one function. Required when using either of these:
    	- gcc version 12.2.1 20221121
    	- gcc version 13.0.0 20221229 (experimental)
    
    2022-12-11  Jim Meyering  <meyering(a)fb.com>
    	build: update gnulib to latest
    
    2022-11-12  Jim Meyering  <meyering(a)fb.com>
    	build: update gnulib to latest
    
    2022-02-14  Paul Eggert  <eggert(a)cs.ucla.edu>
    	doc: mark up SEE ALSO (Bug#53976)
    
    2022-01-24  Jim Meyering  <meyering(a)fb.com>
    	tests: fix false-failure on systems without valgrind
    	* tests/init.cfg (require_valgrind_): Use exit status of subshell,
    	not that of the "local" declaration.
    
    2022-01-14  Paul Eggert  <eggert(a)cs.ucla.edu>
    	build: update gnulib submodule to latest
    
    2022-01-03  Jim Meyering  <meyering(a)fb.com>
    	maint: avoid new syntax-check failure
    	* cfg.mk (local-checks-to-skip): Add sc_indent, to skip it.
    	Otherwise, "make syntax-check" would fail.
    
    	maint: make update-copyright
    
    	build: update gnulib to latest; also bootstrap and init.sh
    
    2021-10-30  Paul Eggert  <eggert(a)cs.ucla.edu>
    	maint: modernize README-{hacking,prereq}
    
    2021-10-16  Paul Eggert  <eggert(a)cs.ucla.edu>
    	doc: copy fdl.texi into git
    	This pacifies this notice from ./bootstrap: “Notice from module
    	fdl: Don't use this module! Instead, copy the referenced license
    	file into your version control repository.”
    	* bootstrap.conf (gnulib_modules): Remove fdl.
    	* doc/fdl.texi: New file, taken from Gnulib.
    
    	maint: direct dependency on time_rz now
    	Now that diff calls tzalloc, it depends directly on time_rz.
    	* bootstrap.conf (gnulib_modules): Add time_rz.
    
    	build: update gnulib submodule to latest
    
    2021-10-15  Paul Eggert  <eggert(a)cs.ucla.edu>
    	diff: fix timezone bug on Solaris
    	Problem reported by Vladimir Marek (bug#51228).
    	* NEWS: Mention this.
    	* src/context.c (print_context_label): Pass localtz to nstrftime,
    	instead of always passing 0.
    	* src/diff.c (main) [!HAVE_TM_GMTOFF]:
    	Initialize localtz if time_format uses %z.
    	* src/diff.h (localtz): New decl.
    	* tests/Makefile.am (TESTS): Add timezone.
    	* tests/timezone: New test.
    
    2021-08-31  Paul Eggert  <eggert(a)cs.ucla.edu>
    	diff3: port better to MS-Windows
    	* src/diff3.c (enum diff_type): Prefix constants like ADD with
    	"DIFF_" to avoid collisions with unwise system headers.
    
    2021-08-30  Paul Eggert  <eggert(a)cs.ucla.edu>
    	maint: port better to non-POSIX
    	Problem privately reported by Gisle Vanem for MS-Windows.
    	* src/util.c (sig, install_signal_handlers):
    	Don’t assume SIGTSTP, SIGALRM, SIGQUIT.
    	(is_tstp_index): New function, for use in SIGTSTP avoidance.
    
    	maint: prefer attribute.h attributes
    	Prefer the macros used in attribute.h, and _Noreturn,
    	to the by-hand use of __attribute__, as this is more portable.
    	* bootstrap.conf (gnulib_modules): Add attribute.
    	* src/system.h: Include attribute.h.  All uses of
    	attributes changed to use the attribute.h macros.
    	Plus, use _Noreturn.
    	(FALLTHROUGH): Remove; attribute.h now defines this.
    
    	build: update gnulib submodule to latest
    
    	diff: avoid double translation
    	* src/analyze.c (briefly_report): Do not translate here,
    	as ‘message’ translates its format.
    
    	diff: use variable arg list for messages
    	This simplifies the code by using varargs.
    	* bootstrap.conf (gnulib_modules): Add flexmember.
    	(XGETTEXT_OPTIONS): Do not flag message5.
    	* src/util.c: Include flexmember.h, stdarg.h.
    	(struct msg): New members msgid, argbytes.  args is now
    	FLEXIBLE_ARRAY_MEMBER, and does not contain msgid.
    	All uses changed.
    	(message): Now varargs.  Detect number of args by counting '%'s.
    	Use FLEXSIZEOF, to avoid problems on systems with buggy
    	allocators.  Avoid redundant ‘*p = 0’ when *p is already zero
    	after stpcpy.
    	(message5): Remove; all callers changed to use ‘message’.
    	(print_message_queue): Abort if too many args were passed;
    	this cannot happen with current diffutils.
    
    2021-08-29  Paul Eggert  <eggert(a)cs.ucla.edu>
    	diff: port better to MS-Windows
    	Problem reported by Gisle Vanem (Bug#36488#30).
    	* src/util.c (xsigaction) [SA_NOCLDSTOP]: Remove; no longer needed.
    	(install_signal_handlers): If the first call to sigaction or
    	signal fails, do not exit; just skip the signal and continue,
    	in case the runtime does not support the signal even though the
    	corresponding SIG* macro is defined.
    
    2021-08-28  Paul Eggert  <eggert(a)cs.ucla.edu>
    	diff: cleanup signal handling just before exit
    	This should fix an unlikely signal handling bug with colored
    	output, and should also fix a Debian FTBFS (Fails To Build From
    	Source) on powerpc64le-linux.  See Bug#34519 and Frédéric
    	Bonnard’s report in:
    	https://bugs.debian.org/922552#19
    	* bootstrap.conf (gnulib_modules): Add raise, sigprocmask.
    	* src/diff.c (main): Call cleanup_signal_handlers before exiting.
    	Don’t bother calling ‘exit’; no longer needed nowadays.
    	* src/util.c (sigprocmask, siginterrupt) [!SA_NOCLDSTOP]:
    	Define to 0 instead of empty, since the results are now used.
    	(sigset_t) [!SA_NOCLDSTOP]: Remove; we now rely on Gnulib.
    	(xsigaction) [SA_NOCLDSTOP]: New function.
    	(xsigaddset, xsigismember, xsignal, xsigprocmask): New functions.
    	(some_signals_caught): New static var.
    	(process_signals): Omit a conditional branch.
    	Don’t bother loading interrupt_signal if stop_signal_count is nonzero.
    	(process_signals, install_signal_handlers):
    	Check for failures from sigprocmask etc.
    	(sig, nsig): Now at top level, since multiple functions need them.
    	(install_signal_handlers): No need for caught_sig array;
    	just use caught_signals.  However, set some_signals_caught.
    	(cleanup_signal_handlers): New function.
    
    2021-08-22  Paul Eggert  <eggert(a)cs.ucla.edu>
    	diff: add integer overflow checking
    	* src/diff.c (option_list, main): Check for integer overflow
    	in some unlikely and hard-to-test cases.
    
    	maint: refactor integer overflow checking
    	Rely on more-modern Gnulib capabilities instead of doing
    	integer overflow checking by hand, in some cases.
    	* lib/cmpbuf.c (buffer_lcm):
    	* src/io.c (slurp, find_identical_ends):
    	Use INT_ADD_WRAPV and INT_MULTIPLY_WRAPV rather than checking
    	overflow by hand.
    	* src/diff3.c (process_diff):
    	* src/dir.c (dir_read):
    	* src/io.c (find_identical_ends, read_files):
    	Use xnmalloc rather than checking overflow by hand.
    	(read_files): Rely on xcalloc to do overflow checking.
    
    	diff: avoid sprintf %s
    	sprintf fails if the result contains more than INT_MAX bytes,
    	so rework the code to avoid usage of sprintf %s where the
    	string might be longer than that.
    	* bootstrap.conf (gnulib_modules): Remove xvasprintf.
    	* src/diff.c (specify_style):
    	* src/util.c (begin_output):
    	Rewrite to avoid sprintf %s.
    	* src/util.c: Do not include xvasprintf.h.
    	(concat): Remove, as it uses sprintf %s.  All uses rewritten.
    
    	diff: use mempcpy
    	* bootstrap.conf (gnulib_modules): Add mempcpy, stpcpy.
    	* src/ifdef.c (do_printf_spec):
    	* src/sdiff.c (expand_name, lf_snarf, temporary_file):
    	* src/util.c (message5):
    	Prefer mempcpy to memcpy plus manual size-updating.
    	Prefer stpcpy to mempcpy plus manual size-spec.
    
    	sdiff: fix unlikely memory leak
    	* src/sdiff.c (temporary_file): Fix memory leak when mkstemp fails.
    	Don’t assume temporary file name length fits in ‘int’.
    
    	diff3: simplify process_diff
    	* src/diff3.c (process_diff): Remove LAST_BLOCK arg, since callers
    	no longer needed it.  All callers changed.  This removes an
    	unnecessary initialization of bptr to NULL.
    
    	maint: modernize IF_LINT for GCC 11.2.1
    	* src/cmp.c (cmp):
    	* src/dir.c (find_dir_file_pathname):
    	* src/sdiff.c (edit):
    	Mention which GCC bug this IF_LINT works around.
    	* src/diff3.c (process_diff):
    	Always initialize to NULL, to avoid problems on mostly-theoretical
    	hosts where accessing uninitialized variables traps.  The next
    	patch will have a better fix for this.
    	* src/ifdef.c (do_printf_spec):
    	No need for IF_LINT in GCC 11.2.1.
    
    	maint: lint → GCC_LINT
    	‘lint’ is for traditional lint and perhaps some other tools;
    	‘GCC_LINT’ is targeted more for what we do.
    	Gnulib accepts either, but we might as well be more accurate.
    	* configure.ac (GCC_LINT): Define this instead of ‘lint’.
    	All uses changed.
    
    	diff: remove printint
    	* src/system.h (printint): Remove.  All uses removed.  This type
    	was only for porting to pre-C89 hosts, and is no longer needed.
    
    	diff: remove INT_MAX limit on -F/-p searches
    	* src/context.c (find_function): Don’t limit function-line
    	searches to INT_MAX bytes, removing a FIXME.
    
    	maint: .gitignore updates
    	* .gitignore: Remove lib/unused-parameter.h.  Add all of m4, since
    	no files there need to be committed; this lets us remove
    	m4/.gitignore and m4/gnulib-cache.m4.  Add *.orig, *.patch, .Tpo,
    	/*.diff, lib/*/ (which lets us remove /lib/sys/), lib/ctype.h,
    	lib/errno.h, lib/float.h, lib/fnmatch.h, lib/getopt-cdefs.h,
    	lib/getopt.h, lib/limits.h, lib/sigsegv.h, lib/stdalign.h,
    	lib/stdarg.h, lib/stdbool.h, lib/stddef.h, lib/stdint.h,
    	lib/stdopen.[ch], vc-dwim-log-*.  Add slashes to autom4te.cache,
    	build-aux.  Remove redundant initial slashes from patterns that
    	also have internal slashes.  Remove plain ABOUT-NLS, since
    	/ABOUT-NLS suffices.  Sort using LC_ALL=C.
    
    	maint: omit unused function if not debugging
    	* src/util.c (debug_script): Compile only if DEBUG.
    
    	maint: remove prepargs
    	* lib/Makefile.am (noinst_HEADERS): Remove prepargs.h.
    	(libdiffutils_a_SOURCES): Remove prepargs.c.
    	* lib/prepargs.c, lib/prepargs.h: Remove.  Hasn’t been
    	needed for many years.
    	* src/diff.c: Do not include prepargs.h.
    
    	maint: zalloc → xzalloc
    	* src/util.c (zalloc): Remove.  All uses replaced
    	by xzalloc, which means the same thing.
    
    2021-08-22  Paul Eggert  <eggert(a)cs.ucla.edu>
    	diff3: suppress -fanalyzer alarms
    	* src/diff3.c: Add pragma to suppress -Wanalyzer-null-dereference
    	alarms.
    
    	* src/diff.h (find_dir_file_pathname): Add malloc-related
    	attributes, to pacify gcc -Wsuggest-attribute=malloc.
    
    2021-08-22  Paul Eggert  <eggert(a)cs.ucla.edu>
    	maint: remove January workaround for Gnulib issue
    	* configure.ac: Don’t add -Wno-analyzer-null-argument, since
    	the issue is now fixed in Gnulib.
    
    	build: update gnulib submodule to latest
    
    2021-08-01  Paul Eggert  <eggert(a)cs.ucla.edu>
    	maint: remove stray init.cfg
    	* init.cfg: Remove.  I guess this file was a stray, since it was a
    	copy of tests/init.cfg when it was checked in, and it hasn’t been
    	maintained since.
    
    	tests: port to valgrind 3.16.0 + GCC 11.2
    	* tests/init.cfg (stderr_fileno_): Reject valgrind if it reports a
    	"Serious error" on a trival use of ‘diff’.  Without this patch, on
    	RHEL 8.4 when I compile diffutils with a GCC 11.2.0 that I built
    	myself, ‘valgrind diff’ spits out messages like WARNING: Serious
    	error when reading debug info / When reading debug info from diff:
    	Ignoring non-Dwarf2/3/4 block in .debug_info’ and this causes the
    	strip-trailing-cr test to fail.  I guess valgrind complains
    	because the valgrind version 3.16.0 that came with RHEL 8.4 cannot
    	grok the debug entries generated by GCC 11.2.0.
    
    2021-08-01  Jim Meyering  <meyering(a)fb.com>
    	maint: post-release administrivia
    	* NEWS: Add header line for next release.
    	* .prev-version: Record previous version.
    	* cfg.mk (old_NEWS_hash): Auto-update.
    
    Signed-off-by: Adolf Belka <adolf.belka(a)ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit 89233e1abe33e087a7aa567f963412b1d008ca2e
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date:   Thu Jun 15 09:27:21 2023 +0000

    core176: Ship dhcpcd
    
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit e031838684f225c334595f87c783634cc3d4163d
Author: Adolf Belka <adolf.belka(a)ipfire.org>
Date:   Fri Jun 2 21:57:52 2023 +0200

    dhcpcd: Update to version 10.0.1
    
    - Update from version 9.4.1 to 10.0.1
    - Update of rootfile not required
    - Changelog is no longer provided. For details of changes you have to look at the commits
       log - https://github.com/NetworkConfiguration/dhcpcd/commits
    
    Signed-off-by: Adolf Belka <adolf.belka(a)ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit 36edd6d923758255595c42beceeae9d347b315e4
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date:   Thu Jun 15 09:26:20 2023 +0000

    core176: Ship /etc/rc.d/init.d/partresize
    
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit f24ce4558aeaf5e3a81f059a4c23a17651afbe2d
Author: Arne Fitzenreiter <arne_f(a)ipfire.org>
Date:   Mon Jun 5 09:30:29 2023 +0200

    partresize: enable journal on ssd's and vm's
    
    the flashimage is build without journal to not destroy
    usb thumbdrives or sd cards. On real ssd's and virtual
    machines it should enabled for higher data security.
    
    So this patch add the journal is drive support smart.
    
    Signed-off-by: Arne Fitzenreiter <arne_f(a)ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit 36a19f2b398f8d70e0c6dc00adee5274ae7da79b
Author: Arne Fitzenreiter <arne_f(a)ipfire.org>
Date:   Mon Jun 5 09:30:28 2023 +0200

    partresize: remove buggy code
    
    DRV is not defined so this code is useless.
    
    Signed-off-by: Arne Fitzenreiter <arne_f(a)ipfire.org>
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit 94820d5062214e5d9404209386e122cdad0edb77
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date:   Thu Jun 15 09:23:34 2023 +0000

    core176: Re-ship ovpnmain.cgi
    
    This is just to ensure that all systems have the latest version of this
    file as it has been changed during the test phase of the previous
    update.
    
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

commit 13183b06722267b5e95d8224bb25fa6cbac27f0f
Author: Michael Tremer <michael.tremer(a)ipfire.org>
Date:   Thu Jun 15 09:23:02 2023 +0000

    Start Core Update 176
    
    Signed-off-by: Michael Tremer <michael.tremer(a)ipfire.org>

-----------------------------------------------------------------------

Summary of changes:
 config/rootfiles/common/gawk                       |   13 +-
 config/rootfiles/common/harfbuzz                   |    7 +-
 config/rootfiles/common/libcap                     |    8 +-
 config/rootfiles/common/man                        |    6 +-
 config/rootfiles/common/nettle                     |    8 +-
 config/rootfiles/common/pam                        |    5 +-
 config/rootfiles/common/procps                     |   32 +-
 config/rootfiles/core/{175 => 176}/exclude         |    0
 .../core/{175 => 176}/filelists/core-files         |    0
 config/rootfiles/core/{175 => 176}/filelists/curl  |    0
 .../{oldcore/125 => core/176}/filelists/dhcpcd     |    0
 .../{oldcore/100 => core/176}/filelists/diffutils  |    0
 .../{oldcore/106 => core/176}/filelists/ed         |    0
 .../{oldcore/158 => core/176}/filelists/ethtool    |    0
 .../filelists/openvpn => core/176/filelists/files} |    2 +-
 .../{oldcore/103 => core/176}/filelists/gawk       |    0
 config/rootfiles/core/{175 => 176}/filelists/grep  |    0
 .../rootfiles/core/{175 => 176}/filelists/harfbuzz |    0
 .../{oldcore/103 => core/176}/filelists/less       |    0
 .../rootfiles/core/{175 => 176}/filelists/libcap   |    0
 .../{oldcore/66 => core/176}/filelists/man         |    0
 .../{oldcore/106 => core/176}/filelists/misc-progs |    0
 config/rootfiles/core/{175 => 176}/filelists/mpfr  |    0
 .../{oldcore/101 => core/176}/filelists/nettle     |    0
 .../{oldcore/119 => core/176}/filelists/pam        |    0
 .../{oldcore/103 => core/176}/filelists/procps     |    0
 .../rootfiles/core/{175 => 176}/filelists/sqlite   |    0
 .../{oldcore/162 => core/176}/filelists/whois      |    0
 .../rootfiles/{oldcore/152 => core/176}/update.sh  |   14 +-
 config/rootfiles/{core => oldcore}/175/exclude     |    0
 .../{core => oldcore}/175/filelists/aarch64/linux  |    0
 .../{core => oldcore}/175/filelists/aarch64/u-boot |    0
 .../{core => oldcore}/175/filelists/acpid          |    0
 .../{core => oldcore}/175/filelists/apache2        |    0
 .../rootfiles/{core => oldcore}/175/filelists/apr  |    0
 .../{core => oldcore}/175/filelists/aprutil        |    0
 .../{core => oldcore}/175/filelists/arping         |    0
 .../rootfiles/{core => oldcore}/175/filelists/bash |    0
 .../rootfiles/{core => oldcore}/175/filelists/bind |    0
 .../{core => oldcore}/175/filelists/collectd       |    0
 .../{core => oldcore}/175/filelists/core-files     |    0
 .../rootfiles/{core => oldcore}/175/filelists/curl |    0
 .../rootfiles/{core => oldcore}/175/filelists/dma  |    0
 .../{core => oldcore}/175/filelists/elinks         |    0
 .../{core => oldcore}/175/filelists/files          |    0
 .../{core => oldcore}/175/filelists/gnupg          |    0
 .../rootfiles/{core => oldcore}/175/filelists/grep |    0
 .../{core => oldcore}/175/filelists/harfbuzz       |    0
 .../{core => oldcore}/175/filelists/iproute2       |    0
 .../rootfiles/{core => oldcore}/175/filelists/krb5 |    0
 .../{core => oldcore}/175/filelists/libcap         |    0
 .../{core => oldcore}/175/filelists/libevent2      |    0
 .../{core => oldcore}/175/filelists/libgcrypt      |    0
 .../{core => oldcore}/175/filelists/libgpg-error   |    0
 .../{core => oldcore}/175/filelists/libhtp         |    0
 .../{core => oldcore}/175/filelists/libpcap        |    0
 .../{core => oldcore}/175/filelists/libxml2        |    0
 .../rootfiles/{core => oldcore}/175/filelists/lvm2 |    0
 .../rootfiles/{core => oldcore}/175/filelists/mpfr |    0
 .../rootfiles/{core => oldcore}/175/filelists/newt |    0
 .../rootfiles/{core => oldcore}/175/filelists/ntp  |    0
 .../{core => oldcore}/175/filelists/openldap       |    0
 .../{core => oldcore}/175/filelists/openssh        |    0
 .../{core => oldcore}/175/filelists/openssl        |    0
 .../{core => oldcore}/175/filelists/openvpn        |    0
 .../{core => oldcore}/175/filelists/parted         |    0
 .../{core => oldcore}/175/filelists/pciutils       |    0
 .../{core => oldcore}/175/filelists/poppler        |    0
 .../rootfiles/{core => oldcore}/175/filelists/ppp  |    0
 .../rootfiles/{core => oldcore}/175/filelists/qpdf |    0
 .../{core => oldcore}/175/filelists/slang          |    0
 .../{core => oldcore}/175/filelists/sqlite         |    0
 .../{core => oldcore}/175/filelists/squid          |    0
 .../{core => oldcore}/175/filelists/suricata       |    0
 .../{core => oldcore}/175/filelists/tzdata         |    0
 .../{core => oldcore}/175/filelists/unbound        |    0
 .../{core => oldcore}/175/filelists/wpa_supplicant |    0
 .../{core => oldcore}/175/filelists/x86_64/linux   |    0
 .../{core => oldcore}/175/filelists/xfsprogs       |    0
 .../rootfiles/{core => oldcore}/175/filelists/zstd |    0
 config/rootfiles/{core => oldcore}/175/update.sh   |    0
 config/rootfiles/packages/transmission             |   92 +-
 config/rootfiles/packages/wavemon                  |    8 +-
 lfs/curl                                           |    4 +-
 lfs/dhcpcd                                         |    8 +-
 lfs/diffutils                                      |    6 +-
 lfs/ed                                             |    6 +-
 lfs/ethtool                                        |    4 +-
 lfs/fping                                          |    8 +-
 lfs/gawk                                           |    6 +-
 lfs/grep                                           |    4 +-
 lfs/harfbuzz                                       |    4 +-
 lfs/less                                           |    4 +-
 lfs/libcap                                         |    4 +-
 lfs/man                                            |    6 +-
 lfs/minidlna                                       |    7 +-
 lfs/mpfr                                           |    2 +-
 lfs/nettle                                         |    6 +-
 lfs/nginx                                          |   10 +-
 lfs/pam                                            |    6 +-
 lfs/procps                                         |   10 +-
 lfs/sqlite                                         |    4 +-
 lfs/strace                                         |    6 +-
 lfs/stress                                         |   29 +-
 lfs/stunnel                                        |    8 +-
 lfs/texinfo                                        |    4 +-
 lfs/tmux                                           |    8 +-
 lfs/transmission                                   |   15 +-
 lfs/wavemon                                        |   32 +-
 lfs/whois                                          |   18 +-
 make.sh                                            |    2 +-
 src/initscripts/system/partresize                  |   18 +-
 src/misc-progs/setuid.c                            |   22 +-
 ...-Allow-free-selection-of-MTU-by-the-user.patch} |    0
 ....0-fix-DNS-rebinding-issue-CVE-2022-26505.patch |   44 -
 .../mpfr-4.2.0-cumulative-patches-1-to-4.patch     |  521 -----
 .../mpfr-4.2.0-cumulative-patches-1-to-9.patch     | 2046 ++++++++++++++++++++
 .../wavemon-0.9.4-force-netlink-include-path.patch |   11 +
 118 files changed, 2284 insertions(+), 804 deletions(-)
 copy config/rootfiles/core/{175 => 176}/exclude (100%)
 copy config/rootfiles/core/{175 => 176}/filelists/core-files (100%)
 copy config/rootfiles/core/{175 => 176}/filelists/curl (100%)
 copy config/rootfiles/{oldcore/125 => core/176}/filelists/dhcpcd (100%)
 copy config/rootfiles/{oldcore/100 => core/176}/filelists/diffutils (100%)
 copy config/rootfiles/{oldcore/106 => core/176}/filelists/ed (100%)
 copy config/rootfiles/{oldcore/158 => core/176}/filelists/ethtool (100%)
 copy config/rootfiles/{oldcore/31/filelists/openvpn => core/176/filelists/files} (57%)
 copy config/rootfiles/{oldcore/103 => core/176}/filelists/gawk (100%)
 copy config/rootfiles/core/{175 => 176}/filelists/grep (100%)
 copy config/rootfiles/core/{175 => 176}/filelists/harfbuzz (100%)
 copy config/rootfiles/{oldcore/103 => core/176}/filelists/less (100%)
 copy config/rootfiles/core/{175 => 176}/filelists/libcap (100%)
 copy config/rootfiles/{oldcore/66 => core/176}/filelists/man (100%)
 copy config/rootfiles/{oldcore/106 => core/176}/filelists/misc-progs (100%)
 copy config/rootfiles/core/{175 => 176}/filelists/mpfr (100%)
 copy config/rootfiles/{oldcore/101 => core/176}/filelists/nettle (100%)
 copy config/rootfiles/{oldcore/119 => core/176}/filelists/pam (100%)
 copy config/rootfiles/{oldcore/103 => core/176}/filelists/procps (100%)
 copy config/rootfiles/core/{175 => 176}/filelists/sqlite (100%)
 copy config/rootfiles/{oldcore/162 => core/176}/filelists/whois (100%)
 copy config/rootfiles/{oldcore/152 => core/176}/update.sh (93%)
 rename config/rootfiles/{core => oldcore}/175/exclude (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/aarch64/linux (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/aarch64/u-boot (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/acpid (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/apache2 (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/apr (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/aprutil (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/arping (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/bash (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/bind (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/collectd (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/core-files (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/curl (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/dma (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/elinks (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/files (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/gnupg (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/grep (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/harfbuzz (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/iproute2 (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/krb5 (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/libcap (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/libevent2 (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/libgcrypt (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/libgpg-error (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/libhtp (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/libpcap (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/libxml2 (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/lvm2 (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/mpfr (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/newt (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/ntp (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/openldap (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/openssh (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/openssl (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/openvpn (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/parted (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/pciutils (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/poppler (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/ppp (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/qpdf (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/slang (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/sqlite (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/squid (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/suricata (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/tzdata (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/unbound (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/wpa_supplicant (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/x86_64/linux (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/xfsprogs (100%)
 rename config/rootfiles/{core => oldcore}/175/filelists/zstd (100%)
 rename config/rootfiles/{core => oldcore}/175/update.sh (100%)
 rename src/patches/{dhcpcd-9.4.0-Allow-free-selection-of-MTU-by-the-user.patch => dhcpcd-10.0.1-Allow-free-selection-of-MTU-by-the-user.patch} (100%)
 delete mode 100644 src/patches/minidlna-1.3.0-fix-DNS-rebinding-issue-CVE-2022-26505.patch
 delete mode 100644 src/patches/mpfr-4.2.0-cumulative-patches-1-to-4.patch
 create mode 100644 src/patches/mpfr-4.2.0-cumulative-patches-1-to-9.patch
 create mode 100644 src/patches/wavemon-0.9.4-force-netlink-include-path.patch

Difference in files:
diff --git a/config/rootfiles/common/gawk b/config/rootfiles/common/gawk
index 3972311e0..7f4496e42 100644
--- a/config/rootfiles/common/gawk
+++ b/config/rootfiles/common/gawk
@@ -1,6 +1,7 @@
 usr/bin/awk
 usr/bin/gawk
-usr/bin/gawk-5.1.1
+usr/bin/gawk-5.2.2
+usr/bin/gawkbug
 usr/etc/profile.d
 usr/etc/profile.d/gawk.csh
 usr/etc/profile.d/gawk.sh
@@ -51,9 +52,19 @@ usr/lib/gawk/time.so
 #usr/share/awk/walkarray.awk
 #usr/share/awk/zerofile.awk
 #usr/share/info/gawk.info
+#usr/share/info/gawk_api-figure1.png
+#usr/share/info/gawk_api-figure2.png
+#usr/share/info/gawk_api-figure3.png
+#usr/share/info/gawk_array-elements.png
+#usr/share/info/gawk_general-program.png
+#usr/share/info/gawk_process-flow.png
+#usr/share/info/gawk_statist.jpg
 #usr/share/info/gawkinet.info
 #usr/share/info/gawkworkflow.info
+#usr/share/info/pm-gawk.info
 #usr/share/man/man1/gawk.1
+#usr/share/man/man1/gawkbug.1
+#usr/share/man/man1/pm-gawk.1
 #usr/share/man/man3/filefuncs.3am
 #usr/share/man/man3/fnmatch.3am
 #usr/share/man/man3/fork.3am
diff --git a/config/rootfiles/common/harfbuzz b/config/rootfiles/common/harfbuzz
index 4798653a2..a03367254 100644
--- a/config/rootfiles/common/harfbuzz
+++ b/config/rootfiles/common/harfbuzz
@@ -44,15 +44,15 @@
 #usr/lib/libharfbuzz-cairo.la
 #usr/lib/libharfbuzz-cairo.so
 usr/lib/libharfbuzz-cairo.so.0
-usr/lib/libharfbuzz-cairo.so.0.60720.0
+usr/lib/libharfbuzz-cairo.so.0.60730.0
 #usr/lib/libharfbuzz-subset.la
 #usr/lib/libharfbuzz-subset.so
 usr/lib/libharfbuzz-subset.so.0
-usr/lib/libharfbuzz-subset.so.0.60720.0
+usr/lib/libharfbuzz-subset.so.0.60730.0
 #usr/lib/libharfbuzz.la
 #usr/lib/libharfbuzz.so
 usr/lib/libharfbuzz.so.0
-usr/lib/libharfbuzz.so.0.60720.0
+usr/lib/libharfbuzz.so.0.60730.0
 #usr/lib/pkgconfig/harfbuzz-cairo.pc
 #usr/lib/pkgconfig/harfbuzz-subset.pc
 #usr/lib/pkgconfig/harfbuzz.pc
@@ -128,6 +128,7 @@ usr/lib/libharfbuzz.so.0.60720.0
 #usr/share/gtk-doc/html/harfbuzz/api-index-6-0-0.html
 #usr/share/gtk-doc/html/harfbuzz/api-index-7-0-0.html
 #usr/share/gtk-doc/html/harfbuzz/api-index-7-1-0.html
+#usr/share/gtk-doc/html/harfbuzz/api-index-7-3-0.html
 #usr/share/gtk-doc/html/harfbuzz/api-index-full.html
 #usr/share/gtk-doc/html/harfbuzz/apple-advanced-typography-api.html
 #usr/share/gtk-doc/html/harfbuzz/buffers-language-script-and-direction.html
diff --git a/config/rootfiles/common/libcap b/config/rootfiles/common/libcap
index af1c22e83..f331e2a43 100644
--- a/config/rootfiles/common/libcap
+++ b/config/rootfiles/common/libcap
@@ -6,20 +6,22 @@ sbin/setcap
 #usr/include/sys/psx_syscall.h
 usr/lib/libcap.so
 usr/lib/libcap.so.2
-usr/lib/libcap.so.2.67
+usr/lib/libcap.so.2.69
 #usr/lib/libpsx.so
 #usr/lib/libpsx.so.2
-usr/lib/libpsx.so.2.67
+usr/lib/libpsx.so.2.69
 #usr/lib/pkgconfig/libcap.pc
 #usr/lib/pkgconfig/libpsx.pc
 #usr/lib/security
 usr/lib/security/pam_cap.so
 #usr/share/man/man1/capsh.1
+#usr/share/man/man3/__psx_syscall.3
 #usr/share/man/man3/cap_clear.3
 #usr/share/man/man3/cap_clear_flag.3
 #usr/share/man/man3/cap_compare.3
 #usr/share/man/man3/cap_copy_ext.3
 #usr/share/man/man3/cap_copy_int.3
+#usr/share/man/man3/cap_copy_int_check.3
 #usr/share/man/man3/cap_drop_bound.3
 #usr/share/man/man3/cap_dup.3
 #usr/share/man/man3/cap_fill.3
@@ -71,6 +73,7 @@ usr/lib/security/pam_cap.so
 #usr/share/man/man3/cap_set_nsowner.3
 #usr/share/man/man3/cap_set_proc.3
 #usr/share/man/man3/cap_set_secbits.3
+#usr/share/man/man3/cap_set_syscall.3
 #usr/share/man/man3/cap_setgroups.3
 #usr/share/man/man3/cap_setuid.3
 #usr/share/man/man3/cap_size.3
@@ -80,6 +83,7 @@ usr/lib/security/pam_cap.so
 #usr/share/man/man3/capsetp.3
 #usr/share/man/man3/libcap.3
 #usr/share/man/man3/libpsx.3
+#usr/share/man/man3/psx_load_syscalls.3
 #usr/share/man/man3/psx_set_sensitivity.3
 #usr/share/man/man3/psx_syscall.3
 #usr/share/man/man3/psx_syscall3.3
diff --git a/config/rootfiles/common/man b/config/rootfiles/common/man
index 21d8115f1..83354be30 100644
--- a/config/rootfiles/common/man
+++ b/config/rootfiles/common/man
@@ -8,10 +8,10 @@
 #usr/bin/manpath
 #usr/bin/whatis
 #usr/lib/man-db
-#usr/lib/man-db/libman-2.10.2.so
+#usr/lib/man-db/libman-2.11.2.so
 #usr/lib/man-db/libman.la
 #usr/lib/man-db/libman.so
-#usr/lib/man-db/libmandb-2.10.2.so
+#usr/lib/man-db/libmandb-2.11.2.so
 #usr/lib/man-db/libmandb.la
 #usr/lib/man-db/libmandb.so
 #usr/libexec/man-db
@@ -53,7 +53,9 @@
 #usr/share/locale/it/LC_MESSAGES/man-db.mo
 #usr/share/locale/ja/LC_MESSAGES/man-db-gnulib.mo
 #usr/share/locale/ja/LC_MESSAGES/man-db.mo
+#usr/share/locale/ka/LC_MESSAGES/man-db-gnulib.mo
 #usr/share/locale/ko/LC_MESSAGES/man-db-gnulib.mo
+#usr/share/locale/ko/LC_MESSAGES/man-db.mo
 #usr/share/locale/ms/LC_MESSAGES/man-db-gnulib.mo
 #usr/share/locale/nb/LC_MESSAGES/man-db-gnulib.mo
 #usr/share/locale/nl/LC_MESSAGES/man-db-gnulib.mo
diff --git a/config/rootfiles/common/nettle b/config/rootfiles/common/nettle
index a9f8aca43..3c0331406 100644
--- a/config/rootfiles/common/nettle
+++ b/config/rootfiles/common/nettle
@@ -8,6 +8,7 @@
 #usr/include/nettle/arcfour.h
 #usr/include/nettle/arctwo.h
 #usr/include/nettle/asn1.h
+#usr/include/nettle/balloon.h
 #usr/include/nettle/base16.h
 #usr/include/nettle/base64.h
 #usr/include/nettle/bignum.h
@@ -48,6 +49,7 @@
 #usr/include/nettle/nettle-meta.h
 #usr/include/nettle/nettle-types.h
 #usr/include/nettle/nist-keywrap.h
+#usr/include/nettle/ocb.h
 #usr/include/nettle/pbkdf2.h
 #usr/include/nettle/pgp.h
 #usr/include/nettle/pkcs1.h
@@ -65,7 +67,9 @@
 #usr/include/nettle/sha2.h
 #usr/include/nettle/sha3.h
 #usr/include/nettle/siv-cmac.h
+#usr/include/nettle/siv-gcm.h
 #usr/include/nettle/sm3.h
+#usr/include/nettle/sm4.h
 #usr/include/nettle/streebog.h
 #usr/include/nettle/twofish.h
 #usr/include/nettle/umac.h
@@ -74,9 +78,9 @@
 #usr/include/nettle/yarrow.h
 usr/lib/libhogweed.so
 usr/lib/libhogweed.so.6
-usr/lib/libhogweed.so.6.6
+usr/lib/libhogweed.so.6.7
 #usr/lib/libnettle.so
 usr/lib/libnettle.so.8
-usr/lib/libnettle.so.8.6
+usr/lib/libnettle.so.8.7
 #usr/lib/pkgconfig/hogweed.pc
 #usr/lib/pkgconfig/nettle.pc
diff --git a/config/rootfiles/common/pam b/config/rootfiles/common/pam
index 88e155f77..e25fc9c26 100644
--- a/config/rootfiles/common/pam
+++ b/config/rootfiles/common/pam
@@ -10,6 +10,7 @@ etc/security
 #etc/security/namespace.d
 #etc/security/namespace.init
 #etc/security/pam_env.conf
+#etc/security/pwhistory.conf
 #etc/security/time.conf
 #lib/security
 #lib/security/faillock
@@ -42,8 +43,6 @@ lib/security/pam_group.so
 lib/security/pam_issue.so
 #lib/security/pam_keyinit.la
 lib/security/pam_keyinit.so
-#lib/security/pam_lastlog.la
-#lib/security/pam_lastlog.so
 #lib/security/pam_limits.la
 lib/security/pam_limits.so
 #lib/security/pam_listfile.la
@@ -187,6 +186,7 @@ usr/lib/libpamc.so.0.82.1
 #usr/share/man/man5/pam.conf.5
 #usr/share/man/man5/pam.d.5
 #usr/share/man/man5/pam_env.conf.5
+#usr/share/man/man5/pwhistory.conf.5
 #usr/share/man/man5/time.conf.5
 #usr/share/man/man8/PAM.8
 #usr/share/man/man8/faillock.8
@@ -205,7 +205,6 @@ usr/lib/libpamc.so.0.82.1
 #usr/share/man/man8/pam_group.8
 #usr/share/man/man8/pam_issue.8
 #usr/share/man/man8/pam_keyinit.8
-#usr/share/man/man8/pam_lastlog.8
 #usr/share/man/man8/pam_limits.8
 #usr/share/man/man8/pam_listfile.8
 #usr/share/man/man8/pam_localuser.8
diff --git a/config/rootfiles/common/procps b/config/rootfiles/common/procps
index 144af75d7..db9a8cfc3 100644
--- a/config/rootfiles/common/procps
+++ b/config/rootfiles/common/procps
@@ -1,11 +1,11 @@
 bin/kill
 bin/ps
-#lib/libproc-2.la
-#lib/libproc-2.so
-lib/libproc-2.so.0
-lib/libproc-2.so.0.0.0
+#lib/libproc2.la
+#lib/libproc2.so
+lib/libproc2.so.0
+lib/libproc2.so.0.0.1
 #lib/pkgconfig
-#lib/pkgconfig/libproc-2.pc
+#lib/pkgconfig/libproc2.pc
 sbin/sysctl
 usr/bin/free
 usr/bin/pgrep
@@ -20,23 +20,27 @@ usr/bin/top
 usr/bin/vmstat
 usr/bin/w
 usr/bin/watch
-#usr/include/procps
-#usr/include/procps/diskstats.h
-#usr/include/procps/meminfo.h
-#usr/include/procps/misc.h
-#usr/include/procps/pids.h
-#usr/include/procps/slabinfo.h
-#usr/include/procps/stat.h
-#usr/include/procps/vmstat.h
-#usr/include/procps/xtra-procps-debug.h
+#usr/include/libproc2
+#usr/include/libproc2/diskstats.h
+#usr/include/libproc2/meminfo.h
+#usr/include/libproc2/misc.h
+#usr/include/libproc2/pids.h
+#usr/include/libproc2/slabinfo.h
+#usr/include/libproc2/stat.h
+#usr/include/libproc2/vmstat.h
+#usr/include/libproc2/xtra-procps-debug.h
 #usr/share/doc/procps-ng
 #usr/share/doc/procps-ng/FAQ
 #usr/share/doc/procps-ng/bugs.md
 #usr/share/doc/procps-ng/libproc.supp
 #usr/share/locale/de/LC_MESSAGES/procps-ng.mo
+#usr/share/locale/es/LC_MESSAGES/procps-ng.mo
 #usr/share/locale/fr/LC_MESSAGES/procps-ng.mo
+#usr/share/locale/ka/LC_MESSAGES/procps-ng.mo
+#usr/share/locale/ko/LC_MESSAGES/procps-ng.mo
 #usr/share/locale/pl/LC_MESSAGES/procps-ng.mo
 #usr/share/locale/pt_BR/LC_MESSAGES/procps-ng.mo
+#usr/share/locale/ro/LC_MESSAGES/procps-ng.mo
 #usr/share/locale/sv/LC_MESSAGES/procps-ng.mo
 #usr/share/locale/uk/LC_MESSAGES/procps-ng.mo
 #usr/share/locale/vi/LC_MESSAGES/procps-ng.mo
diff --git a/config/rootfiles/core/175/exclude b/config/rootfiles/core/176/exclude
similarity index 100%
rename from config/rootfiles/core/175/exclude
rename to config/rootfiles/core/176/exclude
diff --git a/config/rootfiles/core/175/filelists/core-files b/config/rootfiles/core/176/filelists/core-files
similarity index 100%
rename from config/rootfiles/core/175/filelists/core-files
rename to config/rootfiles/core/176/filelists/core-files
diff --git a/config/rootfiles/core/175/filelists/curl b/config/rootfiles/core/176/filelists/curl
similarity index 100%
rename from config/rootfiles/core/175/filelists/curl
rename to config/rootfiles/core/176/filelists/curl
diff --git a/config/rootfiles/core/176/filelists/dhcpcd b/config/rootfiles/core/176/filelists/dhcpcd
new file mode 120000
index 000000000..1e799dabb
--- /dev/null
+++ b/config/rootfiles/core/176/filelists/dhcpcd
@@ -0,0 +1 @@
+../../../common/dhcpcd
\ No newline at end of file
diff --git a/config/rootfiles/core/176/filelists/diffutils b/config/rootfiles/core/176/filelists/diffutils
new file mode 120000
index 000000000..a5c02f3ff
--- /dev/null
+++ b/config/rootfiles/core/176/filelists/diffutils
@@ -0,0 +1 @@
+../../../common/diffutils
\ No newline at end of file
diff --git a/config/rootfiles/core/176/filelists/ed b/config/rootfiles/core/176/filelists/ed
new file mode 120000
index 000000000..0ed331cfa
--- /dev/null
+++ b/config/rootfiles/core/176/filelists/ed
@@ -0,0 +1 @@
+../../../common/ed
\ No newline at end of file
diff --git a/config/rootfiles/core/176/filelists/ethtool b/config/rootfiles/core/176/filelists/ethtool
new file mode 120000
index 000000000..494a53e9d
--- /dev/null
+++ b/config/rootfiles/core/176/filelists/ethtool
@@ -0,0 +1 @@
+../../../common/ethtool
\ No newline at end of file
diff --git a/config/rootfiles/core/176/filelists/files b/config/rootfiles/core/176/filelists/files
new file mode 100644
index 000000000..19b446979
--- /dev/null
+++ b/config/rootfiles/core/176/filelists/files
@@ -0,0 +1,2 @@
+etc/rc.d/init.d/partresize
+srv/web/ipfire/cgi-bin/ovpnmain.cgi
diff --git a/config/rootfiles/core/176/filelists/gawk b/config/rootfiles/core/176/filelists/gawk
new file mode 120000
index 000000000..a3bbe32ce
--- /dev/null
+++ b/config/rootfiles/core/176/filelists/gawk
@@ -0,0 +1 @@
+../../../common/gawk
\ No newline at end of file
diff --git a/config/rootfiles/core/175/filelists/grep b/config/rootfiles/core/176/filelists/grep
similarity index 100%
rename from config/rootfiles/core/175/filelists/grep
rename to config/rootfiles/core/176/filelists/grep
diff --git a/config/rootfiles/core/175/filelists/harfbuzz b/config/rootfiles/core/176/filelists/harfbuzz
similarity index 100%
rename from config/rootfiles/core/175/filelists/harfbuzz
rename to config/rootfiles/core/176/filelists/harfbuzz
diff --git a/config/rootfiles/core/176/filelists/less b/config/rootfiles/core/176/filelists/less
new file mode 120000
index 000000000..65c0e0771
--- /dev/null
+++ b/config/rootfiles/core/176/filelists/less
@@ -0,0 +1 @@
+../../../common/less
\ No newline at end of file
diff --git a/config/rootfiles/core/175/filelists/libcap b/config/rootfiles/core/176/filelists/libcap
similarity index 100%
rename from config/rootfiles/core/175/filelists/libcap
rename to config/rootfiles/core/176/filelists/libcap
diff --git a/config/rootfiles/core/176/filelists/man b/config/rootfiles/core/176/filelists/man
new file mode 120000
index 000000000..b04d65c44
--- /dev/null
+++ b/config/rootfiles/core/176/filelists/man
@@ -0,0 +1 @@
+../../../common/man
\ No newline at end of file
diff --git a/config/rootfiles/core/176/filelists/misc-progs b/config/rootfiles/core/176/filelists/misc-progs
new file mode 120000
index 000000000..7223caddd
--- /dev/null
+++ b/config/rootfiles/core/176/filelists/misc-progs
@@ -0,0 +1 @@
+../../../common/misc-progs
\ No newline at end of file
diff --git a/config/rootfiles/core/175/filelists/mpfr b/config/rootfiles/core/176/filelists/mpfr
similarity index 100%
rename from config/rootfiles/core/175/filelists/mpfr
rename to config/rootfiles/core/176/filelists/mpfr
diff --git a/config/rootfiles/core/176/filelists/nettle b/config/rootfiles/core/176/filelists/nettle
new file mode 120000
index 000000000..f0dba7ac8
--- /dev/null
+++ b/config/rootfiles/core/176/filelists/nettle
@@ -0,0 +1 @@
+../../../common/nettle
\ No newline at end of file
diff --git a/config/rootfiles/core/176/filelists/pam b/config/rootfiles/core/176/filelists/pam
new file mode 120000
index 000000000..660a1d80e
--- /dev/null
+++ b/config/rootfiles/core/176/filelists/pam
@@ -0,0 +1 @@
+../../../common/pam
\ No newline at end of file
diff --git a/config/rootfiles/core/176/filelists/procps b/config/rootfiles/core/176/filelists/procps
new file mode 120000
index 000000000..e17e8ed70
--- /dev/null
+++ b/config/rootfiles/core/176/filelists/procps
@@ -0,0 +1 @@
+../../../common/procps
\ No newline at end of file
diff --git a/config/rootfiles/core/175/filelists/sqlite b/config/rootfiles/core/176/filelists/sqlite
similarity index 100%
rename from config/rootfiles/core/175/filelists/sqlite
rename to config/rootfiles/core/176/filelists/sqlite
diff --git a/config/rootfiles/core/176/filelists/whois b/config/rootfiles/core/176/filelists/whois
new file mode 120000
index 000000000..60cbd1894
--- /dev/null
+++ b/config/rootfiles/core/176/filelists/whois
@@ -0,0 +1 @@
+../../../common/whois
\ No newline at end of file
diff --git a/config/rootfiles/core/176/update.sh b/config/rootfiles/core/176/update.sh
new file mode 100644
index 000000000..250be35df
--- /dev/null
+++ b/config/rootfiles/core/176/update.sh
@@ -0,0 +1,69 @@
+#!/bin/bash
+############################################################################
+#                                                                          #
+# This file is part of the IPFire Firewall.                                #
+#                                                                          #
+# IPFire is free software; you can redistribute it and/or modify           #
+# it under the terms of the GNU General Public License as published by     #
+# the Free Software Foundation; either version 3 of the License, or        #
+# (at your option) any later version.                                      #
+#                                                                          #
+# IPFire is distributed in the hope that it will be useful,                #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of           #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            #
+# GNU General Public License for more details.                             #
+#                                                                          #
+# You should have received a copy of the GNU General Public License        #
+# along with IPFire; if not, write to the Free Software                    #
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA #
+#                                                                          #
+# Copyright (C) 2023 IPFire-Team <info(a)ipfire.org>.                        #
+#                                                                          #
+############################################################################
+#
+. /opt/pakfire/lib/functions.sh
+/usr/local/bin/backupctrl exclude >/dev/null 2>&1
+
+core=176
+
+# Remove old core updates from pakfire cache to save space...
+for (( i=1; i<=$core; i++ )); do
+	rm -f /var/cache/pakfire/core-upgrade-*-$i.ipfire
+done
+
+# Stop services
+
+# Extract files
+extract_files
+
+# Remove files
+rm -vf \
+	/usr/bin/gawk-5.1.1
+
+# update linker config
+ldconfig
+
+# Update Language cache
+/usr/local/bin/update-lang-cache
+
+# Filesytem cleanup
+/usr/local/bin/filesystem-cleanup
+
+# Start services
+
+# This update needs a reboot...
+touch /var/run/need_reboot
+
+# Finish
+/etc/init.d/fireinfo start
+sendprofile
+
+# Update grub config to display new core version
+if [ -e /boot/grub/grub.cfg ]; then
+	grub-mkconfig -o /boot/grub/grub.cfg
+fi
+
+sync
+
+# Don't report the exitcode last command
+exit 0
diff --git a/config/rootfiles/oldcore/175/exclude b/config/rootfiles/oldcore/175/exclude
new file mode 100644
index 000000000..378c2d563
--- /dev/null
+++ b/config/rootfiles/oldcore/175/exclude
@@ -0,0 +1,34 @@
+boot/config.txt
+boot/grub/grub.cfg
+boot/grub/grubenv
+boot/uEnv.txt
+etc/alternatives
+etc/collectd.custom
+etc/default/grub
+etc/ipsec.conf
+etc/ipsec.secrets
+etc/ipsec.user.conf
+etc/ipsec.user.secrets
+etc/localtime
+etc/shadow
+etc/snort/snort.conf
+etc/ssl/openssl.cnf
+etc/sudoers
+etc/sysconfig/firewall.local
+etc/sysconfig/rc.local
+etc/udev/rules.d/30-persistent-network.rules
+srv/web/ipfire/html/proxy.pac
+var/ipfire/dma
+var/ipfire/time
+var/ipfire/firewall/locationblock
+var/ipfire/fwhosts/customlocationgrp
+var/ipfire/ovpn
+var/ipfire/urlfilter/blacklist
+var/ipfire/urlfilter/settings
+var/lib/alternatives
+var/lib/location/database.db
+var/log/cache
+var/log/dhcpcd.log
+var/log/messages
+var/state/dhcp/dhcpd.leases
+var/updatecache
diff --git a/config/rootfiles/core/175/filelists/aarch64/linux b/config/rootfiles/oldcore/175/filelists/aarch64/linux
similarity index 100%
rename from config/rootfiles/core/175/filelists/aarch64/linux
rename to config/rootfiles/oldcore/175/filelists/aarch64/linux
diff --git a/config/rootfiles/core/175/filelists/aarch64/u-boot b/config/rootfiles/oldcore/175/filelists/aarch64/u-boot
similarity index 100%
rename from config/rootfiles/core/175/filelists/aarch64/u-boot
rename to config/rootfiles/oldcore/175/filelists/aarch64/u-boot
diff --git a/config/rootfiles/core/175/filelists/acpid b/config/rootfiles/oldcore/175/filelists/acpid
similarity index 100%
rename from config/rootfiles/core/175/filelists/acpid
rename to config/rootfiles/oldcore/175/filelists/acpid
diff --git a/config/rootfiles/core/175/filelists/apache2 b/config/rootfiles/oldcore/175/filelists/apache2
similarity index 100%
rename from config/rootfiles/core/175/filelists/apache2
rename to config/rootfiles/oldcore/175/filelists/apache2
diff --git a/config/rootfiles/core/175/filelists/apr b/config/rootfiles/oldcore/175/filelists/apr
similarity index 100%
rename from config/rootfiles/core/175/filelists/apr
rename to config/rootfiles/oldcore/175/filelists/apr
diff --git a/config/rootfiles/core/175/filelists/aprutil b/config/rootfiles/oldcore/175/filelists/aprutil
similarity index 100%
rename from config/rootfiles/core/175/filelists/aprutil
rename to config/rootfiles/oldcore/175/filelists/aprutil
diff --git a/config/rootfiles/core/175/filelists/arping b/config/rootfiles/oldcore/175/filelists/arping
similarity index 100%
rename from config/rootfiles/core/175/filelists/arping
rename to config/rootfiles/oldcore/175/filelists/arping
diff --git a/config/rootfiles/core/175/filelists/bash b/config/rootfiles/oldcore/175/filelists/bash
similarity index 100%
rename from config/rootfiles/core/175/filelists/bash
rename to config/rootfiles/oldcore/175/filelists/bash
diff --git a/config/rootfiles/core/175/filelists/bind b/config/rootfiles/oldcore/175/filelists/bind
similarity index 100%
rename from config/rootfiles/core/175/filelists/bind
rename to config/rootfiles/oldcore/175/filelists/bind
diff --git a/config/rootfiles/core/175/filelists/collectd b/config/rootfiles/oldcore/175/filelists/collectd
similarity index 100%
rename from config/rootfiles/core/175/filelists/collectd
rename to config/rootfiles/oldcore/175/filelists/collectd
diff --git a/config/rootfiles/oldcore/175/filelists/core-files b/config/rootfiles/oldcore/175/filelists/core-files
new file mode 100644
index 000000000..0dec37e53
--- /dev/null
+++ b/config/rootfiles/oldcore/175/filelists/core-files
@@ -0,0 +1,5 @@
+etc/system-release
+etc/issue
+etc/os-release
+srv/web/ipfire/cgi-bin/credits.cgi
+var/ipfire/langs
diff --git a/config/rootfiles/oldcore/175/filelists/curl b/config/rootfiles/oldcore/175/filelists/curl
new file mode 120000
index 000000000..4b84bef53
--- /dev/null
+++ b/config/rootfiles/oldcore/175/filelists/curl
@@ -0,0 +1 @@
+../../../common/curl
\ No newline at end of file
diff --git a/config/rootfiles/core/175/filelists/dma b/config/rootfiles/oldcore/175/filelists/dma
similarity index 100%
rename from config/rootfiles/core/175/filelists/dma
rename to config/rootfiles/oldcore/175/filelists/dma
diff --git a/config/rootfiles/core/175/filelists/elinks b/config/rootfiles/oldcore/175/filelists/elinks
similarity index 100%
rename from config/rootfiles/core/175/filelists/elinks
rename to config/rootfiles/oldcore/175/filelists/elinks
diff --git a/config/rootfiles/core/175/filelists/files b/config/rootfiles/oldcore/175/filelists/files
similarity index 100%
rename from config/rootfiles/core/175/filelists/files
rename to config/rootfiles/oldcore/175/filelists/files
diff --git a/config/rootfiles/core/175/filelists/gnupg b/config/rootfiles/oldcore/175/filelists/gnupg
similarity index 100%
rename from config/rootfiles/core/175/filelists/gnupg
rename to config/rootfiles/oldcore/175/filelists/gnupg
diff --git a/config/rootfiles/oldcore/175/filelists/grep b/config/rootfiles/oldcore/175/filelists/grep
new file mode 120000
index 000000000..ab5ef8b0e
--- /dev/null
+++ b/config/rootfiles/oldcore/175/filelists/grep
@@ -0,0 +1 @@
+../../../common/grep
\ No newline at end of file
diff --git a/config/rootfiles/oldcore/175/filelists/harfbuzz b/config/rootfiles/oldcore/175/filelists/harfbuzz
new file mode 120000
index 000000000..ffe1e0d0b
--- /dev/null
+++ b/config/rootfiles/oldcore/175/filelists/harfbuzz
@@ -0,0 +1 @@
+../../../common/harfbuzz
\ No newline at end of file
diff --git a/config/rootfiles/core/175/filelists/iproute2 b/config/rootfiles/oldcore/175/filelists/iproute2
similarity index 100%
rename from config/rootfiles/core/175/filelists/iproute2
rename to config/rootfiles/oldcore/175/filelists/iproute2
diff --git a/config/rootfiles/core/175/filelists/krb5 b/config/rootfiles/oldcore/175/filelists/krb5
similarity index 100%
rename from config/rootfiles/core/175/filelists/krb5
rename to config/rootfiles/oldcore/175/filelists/krb5
diff --git a/config/rootfiles/oldcore/175/filelists/libcap b/config/rootfiles/oldcore/175/filelists/libcap
new file mode 120000
index 000000000..ed67d950a
--- /dev/null
+++ b/config/rootfiles/oldcore/175/filelists/libcap
@@ -0,0 +1 @@
+../../../common/libcap
\ No newline at end of file
diff --git a/config/rootfiles/core/175/filelists/libevent2 b/config/rootfiles/oldcore/175/filelists/libevent2
similarity index 100%
rename from config/rootfiles/core/175/filelists/libevent2
rename to config/rootfiles/oldcore/175/filelists/libevent2
diff --git a/config/rootfiles/core/175/filelists/libgcrypt b/config/rootfiles/oldcore/175/filelists/libgcrypt
similarity index 100%
rename from config/rootfiles/core/175/filelists/libgcrypt
rename to config/rootfiles/oldcore/175/filelists/libgcrypt
diff --git a/config/rootfiles/core/175/filelists/libgpg-error b/config/rootfiles/oldcore/175/filelists/libgpg-error
similarity index 100%
rename from config/rootfiles/core/175/filelists/libgpg-error
rename to config/rootfiles/oldcore/175/filelists/libgpg-error
diff --git a/config/rootfiles/core/175/filelists/libhtp b/config/rootfiles/oldcore/175/filelists/libhtp
similarity index 100%
rename from config/rootfiles/core/175/filelists/libhtp
rename to config/rootfiles/oldcore/175/filelists/libhtp
diff --git a/config/rootfiles/core/175/filelists/libpcap b/config/rootfiles/oldcore/175/filelists/libpcap
similarity index 100%
rename from config/rootfiles/core/175/filelists/libpcap
rename to config/rootfiles/oldcore/175/filelists/libpcap
diff --git a/config/rootfiles/core/175/filelists/libxml2 b/config/rootfiles/oldcore/175/filelists/libxml2
similarity index 100%
rename from config/rootfiles/core/175/filelists/libxml2
rename to config/rootfiles/oldcore/175/filelists/libxml2
diff --git a/config/rootfiles/core/175/filelists/lvm2 b/config/rootfiles/oldcore/175/filelists/lvm2
similarity index 100%
rename from config/rootfiles/core/175/filelists/lvm2
rename to config/rootfiles/oldcore/175/filelists/lvm2
diff --git a/config/rootfiles/oldcore/175/filelists/mpfr b/config/rootfiles/oldcore/175/filelists/mpfr
new file mode 120000
index 000000000..c8468bf42
--- /dev/null
+++ b/config/rootfiles/oldcore/175/filelists/mpfr
@@ -0,0 +1 @@
+../../../common/mpfr
\ No newline at end of file
diff --git a/config/rootfiles/core/175/filelists/newt b/config/rootfiles/oldcore/175/filelists/newt
similarity index 100%
rename from config/rootfiles/core/175/filelists/newt
rename to config/rootfiles/oldcore/175/filelists/newt
diff --git a/config/rootfiles/core/175/filelists/ntp b/config/rootfiles/oldcore/175/filelists/ntp
similarity index 100%
rename from config/rootfiles/core/175/filelists/ntp
rename to config/rootfiles/oldcore/175/filelists/ntp
diff --git a/config/rootfiles/core/175/filelists/openldap b/config/rootfiles/oldcore/175/filelists/openldap
similarity index 100%
rename from config/rootfiles/core/175/filelists/openldap
rename to config/rootfiles/oldcore/175/filelists/openldap
diff --git a/config/rootfiles/core/175/filelists/openssh b/config/rootfiles/oldcore/175/filelists/openssh
similarity index 100%
rename from config/rootfiles/core/175/filelists/openssh
rename to config/rootfiles/oldcore/175/filelists/openssh
diff --git a/config/rootfiles/core/175/filelists/openssl b/config/rootfiles/oldcore/175/filelists/openssl
similarity index 100%
rename from config/rootfiles/core/175/filelists/openssl
rename to config/rootfiles/oldcore/175/filelists/openssl
diff --git a/config/rootfiles/core/175/filelists/openvpn b/config/rootfiles/oldcore/175/filelists/openvpn
similarity index 100%
rename from config/rootfiles/core/175/filelists/openvpn
rename to config/rootfiles/oldcore/175/filelists/openvpn
diff --git a/config/rootfiles/core/175/filelists/parted b/config/rootfiles/oldcore/175/filelists/parted
similarity index 100%
rename from config/rootfiles/core/175/filelists/parted
rename to config/rootfiles/oldcore/175/filelists/parted
diff --git a/config/rootfiles/core/175/filelists/pciutils b/config/rootfiles/oldcore/175/filelists/pciutils
similarity index 100%
rename from config/rootfiles/core/175/filelists/pciutils
rename to config/rootfiles/oldcore/175/filelists/pciutils
diff --git a/config/rootfiles/core/175/filelists/poppler b/config/rootfiles/oldcore/175/filelists/poppler
similarity index 100%
rename from config/rootfiles/core/175/filelists/poppler
rename to config/rootfiles/oldcore/175/filelists/poppler
diff --git a/config/rootfiles/core/175/filelists/ppp b/config/rootfiles/oldcore/175/filelists/ppp
similarity index 100%
rename from config/rootfiles/core/175/filelists/ppp
rename to config/rootfiles/oldcore/175/filelists/ppp
diff --git a/config/rootfiles/core/175/filelists/qpdf b/config/rootfiles/oldcore/175/filelists/qpdf
similarity index 100%
rename from config/rootfiles/core/175/filelists/qpdf
rename to config/rootfiles/oldcore/175/filelists/qpdf
diff --git a/config/rootfiles/core/175/filelists/slang b/config/rootfiles/oldcore/175/filelists/slang
similarity index 100%
rename from config/rootfiles/core/175/filelists/slang
rename to config/rootfiles/oldcore/175/filelists/slang
diff --git a/config/rootfiles/oldcore/175/filelists/sqlite b/config/rootfiles/oldcore/175/filelists/sqlite
new file mode 120000
index 000000000..4ea569766
--- /dev/null
+++ b/config/rootfiles/oldcore/175/filelists/sqlite
@@ -0,0 +1 @@
+../../../common/sqlite
\ No newline at end of file
diff --git a/config/rootfiles/core/175/filelists/squid b/config/rootfiles/oldcore/175/filelists/squid
similarity index 100%
rename from config/rootfiles/core/175/filelists/squid
rename to config/rootfiles/oldcore/175/filelists/squid
diff --git a/config/rootfiles/core/175/filelists/suricata b/config/rootfiles/oldcore/175/filelists/suricata
similarity index 100%
rename from config/rootfiles/core/175/filelists/suricata
rename to config/rootfiles/oldcore/175/filelists/suricata
diff --git a/config/rootfiles/core/175/filelists/tzdata b/config/rootfiles/oldcore/175/filelists/tzdata
similarity index 100%
rename from config/rootfiles/core/175/filelists/tzdata
rename to config/rootfiles/oldcore/175/filelists/tzdata
diff --git a/config/rootfiles/core/175/filelists/unbound b/config/rootfiles/oldcore/175/filelists/unbound
similarity index 100%
rename from config/rootfiles/core/175/filelists/unbound
rename to config/rootfiles/oldcore/175/filelists/unbound
diff --git a/config/rootfiles/core/175/filelists/wpa_supplicant b/config/rootfiles/oldcore/175/filelists/wpa_supplicant
similarity index 100%
rename from config/rootfiles/core/175/filelists/wpa_supplicant
rename to config/rootfiles/oldcore/175/filelists/wpa_supplicant
diff --git a/config/rootfiles/core/175/filelists/x86_64/linux b/config/rootfiles/oldcore/175/filelists/x86_64/linux
similarity index 100%
rename from config/rootfiles/core/175/filelists/x86_64/linux
rename to config/rootfiles/oldcore/175/filelists/x86_64/linux
diff --git a/config/rootfiles/core/175/filelists/xfsprogs b/config/rootfiles/oldcore/175/filelists/xfsprogs
similarity index 100%
rename from config/rootfiles/core/175/filelists/xfsprogs
rename to config/rootfiles/oldcore/175/filelists/xfsprogs
diff --git a/config/rootfiles/core/175/filelists/zstd b/config/rootfiles/oldcore/175/filelists/zstd
similarity index 100%
rename from config/rootfiles/core/175/filelists/zstd
rename to config/rootfiles/oldcore/175/filelists/zstd
diff --git a/config/rootfiles/core/175/update.sh b/config/rootfiles/oldcore/175/update.sh
similarity index 100%
rename from config/rootfiles/core/175/update.sh
rename to config/rootfiles/oldcore/175/update.sh
diff --git a/config/rootfiles/packages/transmission b/config/rootfiles/packages/transmission
index d831ecde9..8efd4a95b 100644
--- a/config/rootfiles/packages/transmission
+++ b/config/rootfiles/packages/transmission
@@ -1,3 +1,4 @@
+etc/rc.d/init.d/transmission
 #etc/transmission
 etc/transmission/settings.json
 usr/bin/transmission-create
@@ -5,88 +6,13 @@ usr/bin/transmission-daemon
 usr/bin/transmission-edit
 usr/bin/transmission-remote
 usr/bin/transmission-show
-#usr/share/man/man1/transmission-create.1
-#usr/share/man/man1/transmission-daemon.1
-#usr/share/man/man1/transmission-edit.1
-#usr/share/man/man1/transmission-remote.1
-#usr/share/man/man1/transmission-show.1
 usr/share/transmission
-#usr/share/transmission/web
-#usr/share/transmission/web/LICENSE
-#usr/share/transmission/web/images
-#usr/share/transmission/web/images/favicon.ico
-#usr/share/transmission/web/images/favicon.png
-#usr/share/transmission/web/images/webclip-icon.png
-#usr/share/transmission/web/index.html
-#usr/share/transmission/web/javascript
-#usr/share/transmission/web/javascript/common.js
-#usr/share/transmission/web/javascript/dialog.js
-#usr/share/transmission/web/javascript/file-row.js
-#usr/share/transmission/web/javascript/formatter.js
-#usr/share/transmission/web/javascript/inspector.js
-#usr/share/transmission/web/javascript/jquery
-#usr/share/transmission/web/javascript/jquery/jquery-migrate.min.js
-#usr/share/transmission/web/javascript/jquery/jquery-ui.min.js
-#usr/share/transmission/web/javascript/jquery/jquery.min.js
-#usr/share/transmission/web/javascript/jquery/jquery.transmenu.min.js
-#usr/share/transmission/web/javascript/jquery/jquery.ui-contextmenu.min.js
-#usr/share/transmission/web/javascript/jquery/json2.min.js
-#usr/share/transmission/web/javascript/main.js
-#usr/share/transmission/web/javascript/notifications.js
-#usr/share/transmission/web/javascript/polyfill.js
-#usr/share/transmission/web/javascript/prefs-dialog.js
-#usr/share/transmission/web/javascript/remote.js
-#usr/share/transmission/web/javascript/torrent-row.js
-#usr/share/transmission/web/javascript/torrent.js
-#usr/share/transmission/web/javascript/transmission.js
-#usr/share/transmission/web/style
-#usr/share/transmission/web/style/jqueryui
-#usr/share/transmission/web/style/jqueryui/images
-#usr/share/transmission/web/style/jqueryui/images/ui-bg_flat_0_aaaaaa_40x100.png
-#usr/share/transmission/web/style/jqueryui/images/ui-bg_flat_75_ffffff_40x100.png
-#usr/share/transmission/web/style/jqueryui/images/ui-bg_glass_55_fbf9ee_1x400.png
-#usr/share/transmission/web/style/jqueryui/images/ui-bg_glass_65_ffffff_1x400.png
-#usr/share/transmission/web/style/jqueryui/images/ui-bg_glass_75_dadada_1x400.png
-#usr/share/transmission/web/style/jqueryui/images/ui-bg_glass_75_e6e6e6_1x400.png
-#usr/share/transmission/web/style/jqueryui/images/ui-bg_glass_95_fef1ec_1x400.png
-#usr/share/transmission/web/style/jqueryui/images/ui-bg_highlight-soft_75_cccccc_1x100.png
-#usr/share/transmission/web/style/jqueryui/images/ui-icons_222222_256x240.png
-#usr/share/transmission/web/style/jqueryui/images/ui-icons_2e83ff_256x240.png
-#usr/share/transmission/web/style/jqueryui/images/ui-icons_454545_256x240.png
-#usr/share/transmission/web/style/jqueryui/images/ui-icons_888888_256x240.png
-#usr/share/transmission/web/style/jqueryui/images/ui-icons_cd0a0a_256x240.png
-#usr/share/transmission/web/style/jqueryui/jquery-ui.min.css
-#usr/share/transmission/web/style/transmission
-#usr/share/transmission/web/style/transmission/common.css
-#usr/share/transmission/web/style/transmission/images
-#usr/share/transmission/web/style/transmission/images/arrow-down.png
-#usr/share/transmission/web/style/transmission/images/arrow-up.png
-#usr/share/transmission/web/style/transmission/images/blue-turtle.png
-#usr/share/transmission/web/style/transmission/images/buttons
-#usr/share/transmission/web/style/transmission/images/buttons/torrent_buttons.png
-#usr/share/transmission/web/style/transmission/images/compact.png
-#usr/share/transmission/web/style/transmission/images/file-priority-high.png
-#usr/share/transmission/web/style/transmission/images/file-priority-low.png
-#usr/share/transmission/web/style/transmission/images/file-priority-normal.png
-#usr/share/transmission/web/style/transmission/images/filter_bar.png
-#usr/share/transmission/web/style/transmission/images/filter_icon.png
-#usr/share/transmission/web/style/transmission/images/inspector-files.png
-#usr/share/transmission/web/style/transmission/images/inspector-info.png
-#usr/share/transmission/web/style/transmission/images/inspector-peers.png
-#usr/share/transmission/web/style/transmission/images/inspector-trackers.png
-#usr/share/transmission/web/style/transmission/images/lock_icon.png
-#usr/share/transmission/web/style/transmission/images/logo.png
-#usr/share/transmission/web/style/transmission/images/progress.png
-#usr/share/transmission/web/style/transmission/images/settings.png
-#usr/share/transmission/web/style/transmission/images/toolbar-close.png
-#usr/share/transmission/web/style/transmission/images/toolbar-folder.png
-#usr/share/transmission/web/style/transmission/images/toolbar-info.png
-#usr/share/transmission/web/style/transmission/images/toolbar-pause-all.png
-#usr/share/transmission/web/style/transmission/images/toolbar-pause.png
-#usr/share/transmission/web/style/transmission/images/toolbar-start-all.png
-#usr/share/transmission/web/style/transmission/images/toolbar-start.png
-#usr/share/transmission/web/style/transmission/images/turtle.png
-#usr/share/transmission/web/style/transmission/images/wrench.png
-#usr/share/transmission/web/style/transmission/mobile.css
+#usr/share/transmission/public_html
+#usr/share/transmission/public_html/images
+#usr/share/transmission/public_html/images/favicon.ico
+#usr/share/transmission/public_html/images/favicon.png
+#usr/share/transmission/public_html/images/webclip-icon.png
+#usr/share/transmission/public_html/index.html
+#usr/share/transmission/public_html/transmission-app.js
+#usr/share/transmission/public_html/transmission-app.js.LICENSE.txt
 var/ipfire/backup/addons/includes/transmission
-etc/rc.d/init.d/transmission
diff --git a/config/rootfiles/packages/wavemon b/config/rootfiles/packages/wavemon
index 4f0fa3c05..3785f5aa9 100644
--- a/config/rootfiles/packages/wavemon
+++ b/config/rootfiles/packages/wavemon
@@ -2,9 +2,5 @@ usr/bin/wavemon
 #usr/share/man/man1/wavemon.1
 #usr/share/man/man5/wavemonrc.5
 #usr/share/wavemon
-#usr/share/wavemon/AUTHORS
-#usr/share/wavemon/COPYING
-#usr/share/wavemon/ChangeLog
-#usr/share/wavemon/NEWS
-#usr/share/wavemon/README
-#usr/share/wavemon/THANKS
+#usr/share/wavemon/LICENSE
+#usr/share/wavemon/README.md
diff --git a/lfs/curl b/lfs/curl
index feb4fa810..995f63cd5 100644
--- a/lfs/curl
+++ b/lfs/curl
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 7.88.1
+VER        = 8.1.0
 
 THISAPP    = curl-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_BLAKE2 = ed7e7aa29efb02fd89a53d5c8d0ec79b4d17612ea07d2a6b5a951f0ca651b4cf7264704344b1a0c2d82196f4cb5c08525e06b4cdd432bc3278ff23c7a6580839
+$(DL_FILE)_BLAKE2 = 768a824b8f5f6ddaa073599c4106f07a8134bcbe0e0d666390be1bce16ba25386d85930853bb47bc90b2c8a499a0b2abb9c685042563801e0fe58b9c315ac6cc
 
 install : $(TARGET)
 
diff --git a/lfs/dhcpcd b/lfs/dhcpcd
index 2373198da..136494ed1 100644
--- a/lfs/dhcpcd
+++ b/lfs/dhcpcd
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2021  IPFire Team  <info(a)ipfire.org>                     #
+# Copyright (C) 2007-2023  IPFire Team  <info(a)ipfire.org>                     #
 #                                                                             #
 # This program is free software: you can redistribute it and/or modify        #
 # it under the terms of the GNU General Public License as published by        #
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 9.4.1
+VER        = 10.0.1
 
 THISAPP    = dhcpcd-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_BLAKE2 = 847c7451918ac89fe384e180ec52ee4624c0f2dc73354ecb4c63b02d8d9cf0a6d164b33e5d083a05d4868079dcf6208a820b4263c80337a12be40a27517ecf87
+$(DL_FILE)_BLAKE2 = f1e93285d040b98bede86bb2e87e372afc0d1d124e7a6580c23d8d228a34ee17001fc3c2d9091b16fb082fe2f2ad7ba50c0dd7b0db2b2237ab1cff9ca152100a
 
 install : $(TARGET)
 
@@ -70,7 +70,7 @@ $(subst %,%_BLAKE2,$(objects)) :
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
 	@$(PREBUILD)
 	@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
-	cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/dhcpcd-9.4.0-Allow-free-selection-of-MTU-by-the-user.patch
+	cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/dhcpcd-10.0.1-Allow-free-selection-of-MTU-by-the-user.patch
 	cd $(DIR_APP) && ./configure \
 			--prefix="" \
 			--sysconfdir=/var/ipfire/dhcpc \
diff --git a/lfs/diffutils b/lfs/diffutils
index b3dab42ca..7fdfb5d87 100644
--- a/lfs/diffutils
+++ b/lfs/diffutils
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2018  IPFire Team  <info(a)ipfire.org>                     #
+# Copyright (C) 2007-2023  IPFire Team  <info(a)ipfire.org>                     #
 #                                                                             #
 # This program is free software: you can redistribute it and/or modify        #
 # it under the terms of the GNU General Public License as published by        #
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 3.8
+VER        = 3.9
 
 THISAPP    = diffutils-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -47,7 +47,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_BLAKE2 = 573abbfba55c62ba30d2084ca68860e9681cfe92648407f7fb04e1aaed2e4719e2fb5a29cf25bd125d762f4dfd52f85ee91f2ec19b099365bada7fe27a0394af
+$(DL_FILE)_BLAKE2 = d43ed9f1643ac46b69083755974fc9611ad00c3b98b08332c681223d17d762567562233b51342a16f7dad8f28dfc5536999143594e33a64e6624001a71787c8f
 
 install : $(TARGET)
 
diff --git a/lfs/ed b/lfs/ed
index 3c19a9094..0a7014fd7 100644
--- a/lfs/ed
+++ b/lfs/ed
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2018  IPFire Team  <info(a)ipfire.org>                     #
+# Copyright (C) 2007-2023  IPFire Team  <info(a)ipfire.org>                     #
 #                                                                             #
 # This program is free software: you can redistribute it and/or modify        #
 # it under the terms of the GNU General Public License as published by        #
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 1.17
+VER        = 1.19
 
 THISAPP    = ed-$(VER)
 DL_FILE    = $(THISAPP).tar.lz
@@ -39,7 +39,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE)                     = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_BLAKE2 = 41c75c0affbf691c8aa7d46fc1a6e0324937aed825b641848703629c8652075e7b797a321203ea49f72ca00a16b1a7d66c21809a1a47b5d0862e21e74dfd5460
+$(DL_FILE)_BLAKE2 = 139305a1d64e96f7eadcb462325918e5eee18de229ec8e1b3fac29dc9b8ef58ceea4cd7ffdbd3674fd7f421d90bc0c9e3557318eb57830d7cd46e579828fa95d
 
 install : $(TARGET)
 
diff --git a/lfs/ethtool b/lfs/ethtool
index f2b996fa9..e6d65ea12 100644
--- a/lfs/ethtool
+++ b/lfs/ethtool
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 6.2
+VER        = 6.3
 
 THISAPP    = ethtool-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_BLAKE2 = b3fa2571b1efef3b686eb4f20b33e6cc32bdb8cff5f2e642454ca3d41c427b1953df7b07e5ac8ef149f8b4be614210e05e593233655e5fe317c48630b20b68e8
+$(DL_FILE)_BLAKE2 = c06509525db47f8ee7c220d0b880fe80323a4a00036e9698432b1b9c85ad75045e98b23498f6283497728cafd187ca173b15f3ad60f8e6f8b4d0c5688d84a1f9
 
 install : $(TARGET)
 
diff --git a/lfs/fping b/lfs/fping
index 8ec776313..0ccf82777 100644
--- a/lfs/fping
+++ b/lfs/fping
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2020  IPFire Team  <info(a)ipfire.org>                     #
+# Copyright (C) 2007-2023  IPFire Team  <info(a)ipfire.org>                     #
 #                                                                             #
 # This program is free software: you can redistribute it and/or modify        #
 # it under the terms of the GNU General Public License as published by        #
@@ -26,7 +26,7 @@ include Config
 
 SUMMARY    = A program to ping multiple hosts
 
-VER        = 5.0
+VER        = 5.1
 
 THISAPP    = fping-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -34,7 +34,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = fping
-PAK_VER    = 6
+PAK_VER    = 7
 
 DEPS       = ""
 
@@ -48,7 +48,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_BLAKE2 = 6dbb6708ecb55c1f1281bcd9e298475a1ad3a21aa81d8488b61cb39ad07d1d7285247a3c39883cbaae0b1a0e4403b6340ea7ec43411b81546f0e8eeefb02ef88
+$(DL_FILE)_BLAKE2 = 2fb344e650b5a359fb8780f2c599455d39405ae823edf695ee4385aa2661dc5811e088bafa1b9f53846ee90c0afa959a92832381a03346d1fda048eb4e7ee098
 
 install : $(TARGET)
 
diff --git a/lfs/gawk b/lfs/gawk
index 3eba8a908..710d7c484 100644
--- a/lfs/gawk
+++ b/lfs/gawk
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2018  IPFire Team  <info(a)ipfire.org>                     #
+# Copyright (C) 2007-2023  IPFire Team  <info(a)ipfire.org>                     #
 #                                                                             #
 # This program is free software: you can redistribute it and/or modify        #
 # it under the terms of the GNU General Public License as published by        #
@@ -25,7 +25,7 @@
 
 include Config
 
-VER        = 5.1.1
+VER        = 5.2.2
 
 THISAPP    = gawk-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -49,7 +49,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_BLAKE2 = 35eec6f4c9bf52496ac16e4b0e1b98947ae0dd46d0ab1df9ec13ede24374a4917214e492182a16e25fc515fa62a765340914feac16a006d980ba1328634a5291
+$(DL_FILE)_BLAKE2 = 49dd69d3e2414867d60fe42b74b39bc6858114aeeb9305ade7bfd64f1933b3c93d59d127362b614cb4b73e29279ed3b4ea9fa0da94fce98ca9925980d17b5d0c
 
 install : $(TARGET)
 
diff --git a/lfs/grep b/lfs/grep
index 1a0b45350..dde47ffa2 100644
--- a/lfs/grep
+++ b/lfs/grep
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 3.10
+VER        = 3.11
 
 THISAPP    = grep-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -50,7 +50,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_BLAKE2 = 5ff169a4ed39e8af1e6729fd2e1bafd39036a4f56cf831f990d58bf9e76bc7d8b055254ae7f60509be4e8bf2f3737edb15431a8ecfc7fc058578d2abea3d73b9
+$(DL_FILE)_BLAKE2 = e21785bca20b5a090d32bb5dc525fb298af30165106ed4c289b1518ea3d2acdcacfd6309b12f13be29a4b958f19588546119c695deb2b7500d49dcff86357bdc
 
 install : $(TARGET)
 
diff --git a/lfs/harfbuzz b/lfs/harfbuzz
index 15cc9ff13..bfc40dba3 100644
--- a/lfs/harfbuzz
+++ b/lfs/harfbuzz
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 7.2.0
+VER        = 7.3.0
 
 THISAPP    = harfbuzz-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_BLAKE2 = 247746d6a0f132a0d6b0c461d9e96a4fe76bc08bca4d05b28a034de60afee8e049d798fdf3962b892b33424245d8f00a63d6068b034e80ad9d7733180e8533c1
+$(DL_FILE)_BLAKE2 = 7b1f6fb0c4c7483ff7a7c27f613b8579af30a304432e1a4e157aec4344449aed93e68443df1f2bc741be6780a6b2214d54804e2df9a20d83c8256b5f98c7fcda
 
 install : $(TARGET)
 
diff --git a/lfs/less b/lfs/less
index 0ba8938f2..3c3dff158 100644
--- a/lfs/less
+++ b/lfs/less
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 608
+VER        = 633
 
 THISAPP    = less-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_BLAKE2 = 988940745fef1222c43b0bf4edec7cc7206ded0ac5d89d3faf4dab706a249913581c2fe7aa6063cf3d717176ed07b69299d3e791ba8a60358483fe9d1bf7f7c6
+$(DL_FILE)_BLAKE2 = e9df180794af365f86734c6b8fde766c1bba42b111717ee5e1cf11001fc7ec3d78910db9bb7c51a76816086f599808b1b60f514011ec40e37650d6bc4f8b3d5c
 
 install : $(TARGET)
 
diff --git a/lfs/libcap b/lfs/libcap
index 63f4ef8b0..951ed80dc 100644
--- a/lfs/libcap
+++ b/lfs/libcap
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 2.67
+VER        = 2.69
 
 THISAPP    = libcap-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_BLAKE2 = bd9be22e439397a3c1726093cfee2410df93773b3139d50a1cdc10daecb666ddb9b64daded6e0ec9f2fd6defd16ea156dbd66bd55360ea266131f31ea0f0e989
+$(DL_FILE)_BLAKE2 = 94d1fef7666a1c383a8b96f1f6092bd242164631532868b628d2f5de71b42a371d041a978ef7fbadfee3eeb433165444995d1078cd790275bc0433a7875a697e
 
 install : $(TARGET)
 
diff --git a/lfs/man b/lfs/man
index c6038c255..00150da4e 100644
--- a/lfs/man
+++ b/lfs/man
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2018  IPFire Team  <info(a)ipfire.org>                     #
+# Copyright (C) 2007-2023  IPFire Team  <info(a)ipfire.org>                     #
 #                                                                             #
 # This program is free software: you can redistribute it and/or modify        #
 # it under the terms of the GNU General Public License as published by        #
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 2.10.2
+VER        = 2.11.2
 
 THISAPP    = man-db-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_BLAKE2 = 8d1748503cdf66a613d7544a27b42df9436bdf4e07ccb130d2fa62343488d2c4ab791238c348236a253abddb564db9d1bb851249da9911737ff822d822819599
+$(DL_FILE)_BLAKE2 = 80ac565cdb69736c0f922b9cbfddcae753d176329781deaf9434d87d7718f9b6ce0b6d4642a03f22a04c7f042dda7f8986b5bce0038f0748461ca55d66964ccc
 
 install : $(TARGET)
 
diff --git a/lfs/minidlna b/lfs/minidlna
index 1ef104743..d0422c08a 100644
--- a/lfs/minidlna
+++ b/lfs/minidlna
@@ -26,7 +26,7 @@ include Config
 
 SUMMARY    = DLNA compatible server
 
-VER        = 1.3.0
+VER        = 1.3.2
 
 THISAPP    = minidlna-$(VER)
 DL_FILE    = minidlna-$(VER).tar.gz
@@ -34,7 +34,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = minidlna
-PAK_VER    = 12
+PAK_VER    = 13
 
 DEPS       = ffmpeg flac libexif libid3tag libogg
 
@@ -50,7 +50,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_BLAKE2 = 3574d48ee63f8c391d1beac653587b87460522178d9f100fe4b0e49f33398b8e527ee74af02d5ea36b23338f7ac73ef3c177edae6be8eed24e94f9db5c8323b0
+$(DL_FILE)_BLAKE2 = e35266be94e4585f399c80a6909318ce973d443506f6becdacdb00802ed0ce060ebf8401ff1b5dfef0b451f609d98f805c80b9a0c87e23d14084338047418620
 
 install : $(TARGET)
 
@@ -84,7 +84,6 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
 	@$(PREBUILD)
 	@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
 	$(UPDATE_AUTOMAKE)
-	cd $(DIR_APP) && patch -Np1 -i $(DIR_SRC)/src/patches/minidlna-1.3.0-fix-DNS-rebinding-issue-CVE-2022-26505.patch
 	cd $(DIR_APP) && ./configure --prefix=/usr
 	cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE)
 	cd $(DIR_APP) && make install
diff --git a/lfs/mpfr b/lfs/mpfr
index c799086d9..e2a1062c1 100644
--- a/lfs/mpfr
+++ b/lfs/mpfr
@@ -70,7 +70,7 @@ $(subst %,%_BLAKE2,$(objects)) :
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
 	@$(PREBUILD)
 	@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
-	cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/mpfr-4.2.0-cumulative-patches-1-to-4.patch
+	cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/mpfr-4.2.0-cumulative-patches-1-to-9.patch
 	cd $(DIR_APP) && $(CONFIGURE_ARGS) ./configure \
 					--prefix=/usr \
 					--enable-thread-safe
diff --git a/lfs/nettle b/lfs/nettle
index 779b87199..2d01f9557 100644
--- a/lfs/nettle
+++ b/lfs/nettle
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2021  IPFire Team  <info(a)ipfire.org>                     #
+# Copyright (C) 2007-2023  IPFire Team  <info(a)ipfire.org>                     #
 #                                                                             #
 # This program is free software: you can redistribute it and/or modify        #
 # it under the terms of the GNU General Public License as published by        #
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 3.8.1
+VER        = 3.9
 
 THISAPP    = nettle-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_BLAKE2 = 22b4ec81645b579504356597ba87b637e46285682020c90e03ecaea386ac9b48eaf91ee76ae3b86b6060be355de20c320ab3b74958074ad23fc08ad9ab6a4cbb
+$(DL_FILE)_BLAKE2 = 80885fa380de58765155a5d4b209e524f4bd0336156ba6f5189702007438998094df0e4e801370fd0a74251b8cf91f46638b0c0139388c2c2098b1207ed3415c
 
 install : $(TARGET)
 
diff --git a/lfs/nginx b/lfs/nginx
index ef13eefb4..ef314a177 100644
--- a/lfs/nginx
+++ b/lfs/nginx
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2020  IPFire Team  <info(a)ipfire.org>                     #
+# Copyright (C) 2007-2023  IPFire Team  <info(a)ipfire.org>                     #
 #                                                                             #
 # This program is free software: you can redistribute it and/or modify        #
 # it under the terms of the GNU General Public License as published by        #
@@ -25,15 +25,15 @@
 include Config
 
 SUMMARY    = A HTTP server and IMAP/POP3 proxy server
-VER        = 1.22.1
+VER        = 1.24.0
 
 THISAPP    = nginx-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
-PROG	   = nginx
-PAK_VER	   = 14
+PROG	    = nginx
+PAK_VER    = 15
 
 DEPS       =
 
@@ -47,7 +47,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_BLAKE2 = 253cd4c53ed0e6d3da8ca0f0ab3b2c46f6c7222c4f6fedd05302dd05efee31869d25a33947cca3ca526899cbdfcea96754be34e15643ebd77da24175319edb46
+$(DL_FILE)_BLAKE2 = 7f671c57666dec822bff72fcf0e4eec35ecf981b8f1e489827f9bbbf9179036f61c9fdc7e497c076ccaeb35b9ba3dfe7684e4fc91ee9cae52601f68859bb034d
 
 install : $(TARGET)
 
diff --git a/lfs/pam b/lfs/pam
index b810f787d..020de981c 100644
--- a/lfs/pam
+++ b/lfs/pam
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2020  IPFire Team  <info(a)ipfire.org>                     #
+# Copyright (C) 2007-2023  IPFire Team  <info(a)ipfire.org>                     #
 #                                                                             #
 # This program is free software: you can redistribute it and/or modify        #
 # it under the terms of the GNU General Public License as published by        #
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 1.5.2
+VER        = 1.5.3
 
 THISAPP    = Linux-PAM-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_BLAKE2 = a835034cd239bc9377419c13dda45276e8e64a33fcf714a1957ff41112fbb6dce0be8e9773afc82458a04d54bf146a0c26117d7170521fecdc0c98184cef5f4f
+$(DL_FILE)_BLAKE2 = 362c939f3afc343e6f4e78e7f6ba6f7a9c6ee0a9948bb5a4fc34cecfd29e9fa974082534d4ceedd04d8d3e34c7b3ef43d2a07ba5f41d26da04ec8330fc3790fb
 
 install : $(TARGET)
 
diff --git a/lfs/procps b/lfs/procps
index 5189e477b..a8f1c2c82 100644
--- a/lfs/procps
+++ b/lfs/procps
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2018  IPFire Team  <info(a)ipfire.org>                     #
+# Copyright (C) 2007-2023  IPFire Team  <info(a)ipfire.org>                     #
 #                                                                             #
 # This program is free software: you can redistribute it and/or modify        #
 # it under the terms of the GNU General Public License as published by        #
@@ -24,10 +24,10 @@
 
 include Config
 
-VER        = v4.0.0
+VER        = v4.0.3
 
 THISAPP    = procps-$(VER)
-DL_FILE    = $(THISAPP).tar.gz
+DL_FILE    = $(THISAPP).tar.bz2
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_BLAKE2 = 5b6c684aaaf4114ea6d53287f220fbc375556a9630a54d9ad8e0750d1d373ab73cf38e06df7cc663853d11fa69237ecd89dffaf3a84dc57df652357983f536cb
+$(DL_FILE)_BLAKE2 = 9836bda7bf8c9dab83d2c6064af3c52f070737ad2fb399e4ca015f33c1d45db378097eb9e77763107975412a19b4dacfbe110655074704270d679ccd94e6f9c0
 
 install : $(TARGET)
 
@@ -69,7 +69,7 @@ $(subst %,%_BLAKE2,$(objects)) :
 
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
 	@$(PREBUILD)
-	@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
+	@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
 	cd $(DIR_APP) && ./autogen.sh
 	cd $(DIR_APP) && ./configure \
 				--prefix=/usr \
diff --git a/lfs/sqlite b/lfs/sqlite
index 40e7672cb..d059bb068 100644
--- a/lfs/sqlite
+++ b/lfs/sqlite
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 3410200
+VER        = 3420000
 
 THISAPP    = sqlite-autoconf-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -40,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_BLAKE2 = 928134ec28c349bf984705b6296fc01f31028aee17035d38b2c0dbb020ab1a8c431fe29092f3742ac68bdd0d3146a42b72404da9a7744209f4ea1f20312cf8c3
+$(DL_FILE)_BLAKE2 = 3c4837952a3d9864f03d7a2c164b303f196ad1deeef2f96056509dd808108655e1a2b2161b4bd614bd01feaec98bb9f8019237bfbd5901ec9ae06b442175d0f6
 
 install : $(TARGET)
 
diff --git a/lfs/strace b/lfs/strace
index eb8752f6c..006d85be5 100644
--- a/lfs/strace
+++ b/lfs/strace
@@ -26,7 +26,7 @@ include Config
 
 SUMMARY    = A utility to trace the system calls of a program
 
-VER        = 6.1
+VER        = 6.3
 SUP_ARCHES = x86_64 aarch64
 
 THISAPP    = strace-$(VER)
@@ -35,7 +35,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = strace
-PAK_VER    = 8
+PAK_VER    = 9
 
 DEPS       = elfutils
 
@@ -49,7 +49,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_BLAKE2 = f11bdddcc23d9bbe7196a102165ac40d3f39e0dec8b9c727e226d99ae0b6f22865bd0582d4e9c15fdce87dd405e0e9c68b60041bd2b90bc8480557f82ca6dcb8
+$(DL_FILE)_BLAKE2 = 7373ebddd6f23713b752ed91598e536d61e08865907c7825dd3492574c7feb0ad6d56bea0e144e1082ac1882d68bb5f160f25e70bfc6e2fd47571ef2c40403fb
 
 install : $(TARGET)
 
diff --git a/lfs/stress b/lfs/stress
index 52860f078..8bb06e278 100644
--- a/lfs/stress
+++ b/lfs/stress
@@ -1,6 +1,21 @@
 ###############################################################################
-# IPFire.org    - An Open Source Firewall Solution                            #
-# Copyright (C) 2007-2018  IPFire Team  <info(a)ipfire.org>                     #
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2007-2023  IPFire Team  <info(a)ipfire.org>                     #
+#                                                                             #
+# This program is free software: you can redistribute it and/or modify        #
+# it under the terms of the GNU General Public License as published by        #
+# the Free Software Foundation, either version 3 of the License, or           #
+# (at your option) any later version.                                         #
+#                                                                             #
+# This program is distributed in the hope that it will be useful,             #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
+# GNU General Public License for more details.                                #
+#                                                                             #
+# You should have received a copy of the GNU General Public License           #
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
+#                                                                             #
 ###############################################################################
 
 ###############################################################################
@@ -11,15 +26,15 @@ include Config
 
 SUMMARY    = Tool to load and stress a computer
 
-VER        = 1.0.5
+VER        = 1.0.7
 
 THISAPP    = stress-$(VER)
-DL_FILE    = $(THISAPP).tar.gz
+DL_FILE    = $(THISAPP).tar.bz2
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = stress
-PAK_VER    = 2
+PAK_VER    = 3
 
 DEPS       =
 
@@ -33,7 +48,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_BLAKE2 = 7bc4a1d7739828ccd4b58c814e8ded42cddbd0b226bb29e916fe220835bcfa9dcdb86191bb321247aa98bd0e58791556713770bdeda5dad399aa61f2703a766c
+$(DL_FILE)_BLAKE2 = c425134be47715ea5d50c56eea20f211f79feecccc73823f38c3a0f3fc1ee612ee6b6fcd07045f888ce6f1cb762a7ae42fe9003b91fe43451eabae17d918bdfc
 
 install : $(TARGET)
 
@@ -65,7 +80,7 @@ $(subst %,%_BLAKE2,$(objects)) :
 
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
 	@$(PREBUILD)
-	@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE)
+	@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
 	cd $(DIR_APP) && ./autogen.sh
 	cd $(DIR_APP) && ./configure --prefix=/usr
 	cd $(DIR_APP) && make $(MAKETUNING)
diff --git a/lfs/stunnel b/lfs/stunnel
index b157de1ff..24527bb25 100644
--- a/lfs/stunnel
+++ b/lfs/stunnel
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2022  IPFire Team  <info(a)ipfire.org>                     #
+# Copyright (C) 2007-2023  IPFire Team  <info(a)ipfire.org>                     #
 #                                                                             #
 # This program is free software: you can redistribute it and/or modify        #
 # it under the terms of the GNU General Public License as published by        #
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 5.63
+VER        = 5.69
 SUMMARY    = Universal TLS Tunnel
 
 THISAPP    = stunnel-$(VER)
@@ -33,7 +33,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = stunnel
-PAK_VER    = 10
+PAK_VER    = 11
 
 DEPS       =
 
@@ -47,7 +47,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_BLAKE2 = 4558f233bae0972853239b4ad8638cbf8402baf221c8b65f0b8857c624735430ed026fa4cfac8212e60737f1f522e38898da5056a66e3374509886b02068e1db
+$(DL_FILE)_BLAKE2 = fd213d1c7bc9efb42ee501bccd720c6535d123fe9d78354ff14a1701edcc30f1b563ff46fa34fd3f53bb976a7e700f0cd63589a8488738314604e593a95ad7bd
 
 install : $(TARGET)
 
diff --git a/lfs/texinfo b/lfs/texinfo
index 62acc0af5..6cd0e1f28 100644
--- a/lfs/texinfo
+++ b/lfs/texinfo
@@ -24,7 +24,7 @@
 
 include Config
 
-VER        = 7.0.2
+VER        = 7.0.3
 
 THISAPP    = texinfo-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -47,7 +47,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_BLAKE2 = 23737cc800392c949add14c1d0a01a294e8c224d958c03325c96d6540dcfae49db5c2d4a8c29310c0603f8ac8477f6ee00a14db4aa6caab317b19e776139e617
+$(DL_FILE)_BLAKE2 = 38710faba2f717f7990228d58924901ea7d7378cc02e2059a437b5127f9e2dc67f732584e3f45fc34e8ef6d7671a546fe66871dadbd29e772f3417768622a650
 
 install : $(TARGET)
 
diff --git a/lfs/tmux b/lfs/tmux
index 3e0b22fef..19cc6b7f8 100644
--- a/lfs/tmux
+++ b/lfs/tmux
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2022  IPFire Team  <info(a)ipfire.org>                     #
+# Copyright (C) 2007-2023  IPFire Team  <info(a)ipfire.org>                     #
 #                                                                             #
 # This program is free software: you can redistribute it and/or modify        #
 # it under the terms of the GNU General Public License as published by        #
@@ -26,7 +26,7 @@ include Config
 
 SUMMARY    = Terminal multiplexer
 
-VER        = 3.3
+VER        = 3.3a
 
 THISAPP    = tmux-$(VER)
 DL_FILE    = $(THISAPP).tar.gz
@@ -34,7 +34,7 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = tmux
-PAK_VER    = 10
+PAK_VER    = 11
 
 DEPS       =
 
@@ -48,7 +48,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_BLAKE2 = 7e5b66d6d294c580d86f4f8729f867277e00f401dfa2a4b4c5dd5bd08c1e9884122340cbebfb37f56c67c65e940667f5b79b638f20f05282c434f7b3641ad003
+$(DL_FILE)_BLAKE2 = e835ce0f136175521035a684419f221864edb0a9506d7d68cbc0239b1349e78949ebd96573a9d8651a2df6d99acb433075d6e0c20d7394a53fe6b44bd9e56069
 
 install : $(TARGET)
 
diff --git a/lfs/transmission b/lfs/transmission
index ea1167da4..4e0667353 100644
--- a/lfs/transmission
+++ b/lfs/transmission
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2020  IPFire Team  <info(a)ipfire.org>                     #
+# Copyright (C) 2007-2023  IPFire Team  <info(a)ipfire.org>                     #
 #                                                                             #
 # This program is free software: you can redistribute it and/or modify        #
 # it under the terms of the GNU General Public License as published by        #
@@ -26,7 +26,7 @@ include Config
 
 SUMMARY    = A BitTorrent client with multiple UIs
 
-VER        = 3.00
+VER        = 4.0.3
 
 THISAPP    = transmission-$(VER)
 DL_FILE    = $(THISAPP).tar.xz
@@ -34,14 +34,12 @@ DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = transmission
-PAK_VER    = 18
+PAK_VER    = 19
 
 DEPS       =
 
 SERVICES   = transmission
 
-CXXFLAGS  += -fno-exceptions
-
 ###############################################################################
 # Top-level Rules
 ###############################################################################
@@ -50,7 +48,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_BLAKE2 = 108c9acb8e8cb9c037ea96ca25f32c8421a6981b613399c73e2cd597dd1b529409329fa3c327630c164db05d8b3da81e634941bca08c7e258bb2d283782b9906
+$(DL_FILE)_BLAKE2 = 3d58f002d57458869e143e4a3617c8992e51a01f15f0e17031bc2913f404a455cde3397bde404f84a2234d12411e99b2902e4213ca6811b95288bb68f9b98553
 
 install : $(TARGET)
 
@@ -83,7 +81,10 @@ $(subst %,%_BLAKE2,$(objects)) :
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
 	@$(PREBUILD)
 	@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
-	cd $(DIR_APP) && ./configure --prefix=/usr --disable-static
+	cd $(DIR_APP) && cmake . \
+			-DCMAKE_INSTALL_PREFIX=/usr \
+			-DCMAKE_BUILD_TYPE=Release \
+			-DINSTALL_DOC=OFF
 	cd $(DIR_APP) && make $(MAKETUNING) $(EXTRA_MAKE)
 	cd $(DIR_APP) && make install
 
diff --git a/lfs/wavemon b/lfs/wavemon
index 2fb8b75b3..265449c4f 100644
--- a/lfs/wavemon
+++ b/lfs/wavemon
@@ -1,8 +1,24 @@
 ###############################################################################
-# IPFire.org    - An Open Source Firewall Solution                            #
-# Copyright (C) 2007-2018  IPFire Team  <info(a)ipfire.org>                     #
+#                                                                             #
+# IPFire.org - A linux based firewall                                         #
+# Copyright (C) 2007-2023  IPFire Team  <info(a)ipfire.org>                     #
+#                                                                             #
+# This program is free software: you can redistribute it and/or modify        #
+# it under the terms of the GNU General Public License as published by        #
+# the Free Software Foundation, either version 3 of the License, or           #
+# (at your option) any later version.                                         #
+#                                                                             #
+# This program is distributed in the hope that it will be useful,             #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of              #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               #
+# GNU General Public License for more details.                                #
+#                                                                             #
+# You should have received a copy of the GNU General Public License           #
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.       #
+#                                                                             #
 ###############################################################################
 
+
 ###############################################################################
 # Definitions
 ###############################################################################
@@ -11,15 +27,15 @@ include Config
 
 SUMMARY    = An ncurses monitoring application for wireless network devices
 
-VER        = 0.7.5
+VER        = 0.9.4
 
 THISAPP    = wavemon-$(VER)
-DL_FILE    = $(THISAPP).tar.bz2
+DL_FILE    = $(THISAPP).tar.gz
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 PROG       = wavemon
-PAK_VER    = 1
+PAK_VER    = 2
 
 DEPS       =
 
@@ -33,7 +49,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_BLAKE2 = 144a8aa36e99d39fb155e7afe2322c9446e168c1b009f6d53f149f7cd6c1e723e47a30233c25849b1aa1fd8c601e8d8881062daf3113c2964b0c239a5b110b6c
+$(DL_FILE)_BLAKE2 = e07feb16dba86b1a91dc9b7d7df51da1b4498d8ea1a6ca36f6ae1e30e0e0bb09971330a470cde3425e7ae785bbd2819460ac2f1ddc2bc8da3aae29de3356bdbb
 
 install : $(TARGET)
 
@@ -66,10 +82,10 @@ $(subst %,%_BLAKE2,$(objects)) :
 $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
 	@$(PREBUILD)
 	@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
+	cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/wavemon-0.9.4-force-netlink-include-path.patch
 	$(UPDATE_AUTOMAKE)
 	cd $(DIR_APP) && ./configure \
-		--prefix=/usr
-
+			--prefix=/usr
 	cd $(DIR_APP) && make $(MAKETUNING)
 	cd $(DIR_APP) && make install
 	@rm -rf $(DIR_APP)
diff --git a/lfs/whois b/lfs/whois
index 19989af36..7715f5c29 100644
--- a/lfs/whois
+++ b/lfs/whois
@@ -1,7 +1,7 @@
 ###############################################################################
 #                                                                             #
 # IPFire.org - A linux based firewall                                         #
-# Copyright (C) 2007-2022  IPFire Team  <info(a)ipfire.org>                     #
+# Copyright (C) 2007-2023  IPFire Team  <info(a)ipfire.org>                     #
 #                                                                             #
 # This program is free software: you can redistribute it and/or modify        #
 # it under the terms of the GNU General Public License as published by        #
@@ -24,16 +24,14 @@
 
 include Config
 
-VER        = 5.5.13
+VER        = 5.5.17
 
-THISAPP    = whois_$(VER)
-DL_FILE    = $(THISAPP).tar.xz
+THISAPP    = whois-$(VER)
+DL_FILE    = $(THISAPP).tar.gz
 DL_FROM    = $(URL_IPFIRE)
 DIR_APP    = $(DIR_SRC)/$(THISAPP)
 TARGET     = $(DIR_INFO)/$(THISAPP)
 
-PROG       = whois
-
 ###############################################################################
 # Top-level Rules
 ###############################################################################
@@ -42,7 +40,7 @@ objects = $(DL_FILE)
 
 $(DL_FILE) = $(DL_FROM)/$(DL_FILE)
 
-$(DL_FILE)_BLAKE2 = 6ce90ad907c4ea79301adbcda5a402344df9f283ac258a3186f5c405e0abfb97f603f3f163652f1cf03a1fc60290b8f9f54b509bf7d9fd3cec12189eeeaaffe5
+$(DL_FILE)_BLAKE2 = 2c60c3e9725fc31d1ff159c25a9be8ce42784db8331820a7459c2359364d0312395632a9e478995ddf787e363f073f9018982a2fb95739357a45a826ce8f79ee
 
 install : $(TARGET)
 
@@ -74,11 +72,11 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
 	@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
 	$(UPDATE_AUTOMAKE)
 
-	cd $(DIR_SRC)/$(PROG) && make $(MAKETUNING) \
+	cd $(DIR_SRC)/$(THISAPP) && make $(MAKETUNING) \
 	                            CONFIG_FILE=/etc/whois.conf \
 	                            whois
-	cd $(DIR_SRC)/$(PROG) && make prefix=/usr install-whois
-	cd $(DIR_SRC)/$(PROG) && install -v -m 644 whois.conf -t /etc/
+	cd $(DIR_SRC)/$(THISAPP) && make prefix=/usr install-whois
+	cd $(DIR_SRC)/$(THISAPP) && install -v -m 644 whois.conf -t /etc/
 
 	@rm -rf $(DIR_APP)
 	@$(POSTBUILD)
diff --git a/make.sh b/make.sh
index 2c0bcae45..6b9a8146b 100755
--- a/make.sh
+++ b/make.sh
@@ -23,7 +23,7 @@ NAME="IPFire"							# Software name
 SNAME="ipfire"							# Short name
 # If you update the version don't forget to update backupiso and add it to core update
 VERSION="2.27"							# Version number
-CORE="175"							# Core Level (Filename)
+CORE="176"							# Core Level (Filename)
 SLOGAN="www.ipfire.org"						# Software slogan
 CONFIG_ROOT=/var/ipfire						# Configuration rootdir
 MAX_RETRIES=1							# prefetch/check loop
diff --git a/src/initscripts/system/partresize b/src/initscripts/system/partresize
index 272fbe482..df9c43991 100644
--- a/src/initscripts/system/partresize
+++ b/src/initscripts/system/partresize
@@ -48,6 +48,7 @@ case "${1}" in
 			# Azure and Google Compute Platform
 			if running_on_ec2 || running_on_oci || running_on_azure || running_on_gcp; then
 				scon="on"
+				journal="on"
 			fi
 
 			mount /boot > /dev/null
@@ -109,14 +110,21 @@ case "${1}" in
 						root_dev="${dev::-2}"
 					fi
 
-					boot_mesg "Growing root partition to maximum size..."
-					echo -e ',+' | sfdisk --no-reread -f -N${part_num} "${root_dev}" 2>/dev/null
+					# Check if the device support smart
+					smartctl --smart=on "${root_dev}" > /dev/null
+					if [ ${?} = 0 ]; then
+						journal="on"
+					fi
 
-					# Update c,h,s values of the boot partition...
-					if [ ${part_num} -ne 1 -a -b "${root_dev}1" ]; then
-						echo -e ',' | sfdisk --no-reread -f -N1 ${DRV} &> /dev/null
+					# Enable journal
+					if [ "${journal}" = "on" ]; then
+						boot_mesg "Create journal on "${dev}" ..."
+						tune2fs -O has_journal "${dev}"
 					fi
 
+					boot_mesg "Growing root partition to maximum size..."
+					echo -e ',+' | sfdisk --no-reread -f -N${part_num} "${root_dev}" 2>/dev/null
+
 					# The filesystem should be resized after
 					# this operation
 					touch /.resizefs
diff --git a/src/misc-progs/setuid.c b/src/misc-progs/setuid.c
index 17b0e7066..9dc0a767b 100644
--- a/src/misc-progs/setuid.c
+++ b/src/misc-progs/setuid.c
@@ -104,16 +104,20 @@ static int system_core(char* command, char** args, uid_t uid, gid_t gid, char *e
 		}
 
 		default: /* parent */
-			do {
-				if (waitpid(pid, &status, 0) == -1) {
-					if (errno != EINTR)
-						return -1;
-					} else {
-						return status;
-					}
-			} while (1);
-	}
+			// Wait until the child process has finished
+			waitpid(pid, &status, 0);
+
+			// The child was terminated by a signal
+			if (WIFSIGNALED(status))
+				 return 128 + WTERMSIG(status);
 
+			// Return the exit code if available
+			if (WIFEXITED(status))
+				return WEXITSTATUS(status);
+
+			// Something unexpected happened, exiting with error
+			return EXIT_FAILURE;
+	}
 }
 
 int run(char* command, char** argv) {
diff --git a/src/patches/dhcpcd-9.4.0-Allow-free-selection-of-MTU-by-the-user.patch b/src/patches/dhcpcd-10.0.1-Allow-free-selection-of-MTU-by-the-user.patch
similarity index 100%
rename from src/patches/dhcpcd-9.4.0-Allow-free-selection-of-MTU-by-the-user.patch
rename to src/patches/dhcpcd-10.0.1-Allow-free-selection-of-MTU-by-the-user.patch
diff --git a/src/patches/minidlna-1.3.0-fix-DNS-rebinding-issue-CVE-2022-26505.patch b/src/patches/minidlna-1.3.0-fix-DNS-rebinding-issue-CVE-2022-26505.patch
deleted file mode 100644
index c28425811..000000000
--- a/src/patches/minidlna-1.3.0-fix-DNS-rebinding-issue-CVE-2022-26505.patch
+++ /dev/null
@@ -1,44 +0,0 @@
---- minidlna-1.3.0/upnphttp.c.orig	2020-11-24 19:53:50.000000000 +0100
-+++ minidlna-1.3.0/upnphttp.c	2022-04-30 12:59:23.432073807 +0200
-@@ -273,6 +273,11 @@
- 				p = colon + 1;
- 				while(isspace(*p))
- 					p++;
-+				    n = 0;
-+				    while(p[n] >= ' ')
-+					    n++;
-+				    h->req_Host = p;
-+				    h->req_HostLen = n;					
- 				for(n = 0; n < n_lan_addr; n++)
- 				{
- 					for(i = 0; lan_addr[n].str[i]; i++)
-@@ -909,6 +914,18 @@
- 	}
- 
- 	DPRINTF(E_DEBUG, L_HTTP, "HTTP REQUEST: %.*s\n", h->req_buflen, h->req_buf);
-+	if(h->req_Host && h->req_HostLen > 0) {
-+		const char *ptr = h->req_Host;
-+		DPRINTF(E_MAXDEBUG, L_HTTP, "Host: %.*s\n", h->req_HostLen, h->req_Host);
-+		for(i = 0; i < h->req_HostLen; i++) {
-+			if(*ptr != ':' && *ptr != '.' && (*ptr > '9' || *ptr < '0')) {
-+				DPRINTF(E_ERROR, L_HTTP, "DNS rebinding attack suspected (Host: %.*s)", h->req_HostLen, h->req_Host);
-+				Send404(h);/* 403 */
-+				return;
-+			}
-+			ptr++;
-+		}
-+	}	
- 	if(strcmp("POST", HttpCommand) == 0)
- 	{
- 		h->req_command = EPost;
---- minidlna-1.3.0/upnphttp.h.orig	2020-11-24 19:53:50.000000000 +0100
-+++ minidlna-1.3.0/upnphttp.h	2022-04-30 13:00:22.619152312 +0200
-@@ -89,6 +89,8 @@
- 	struct client_cache_s * req_client;
- 	const char * req_soapAction;
- 	int req_soapActionLen;
-+	const char * req_Host;        /* Host: header */
-+	int req_HostLen;
- 	const char * req_Callback;	/* For SUBSCRIBE */
- 	int req_CallbackLen;
- 	const char * req_NT;
diff --git a/src/patches/mpfr-4.2.0-cumulative-patches-1-to-4.patch b/src/patches/mpfr-4.2.0-cumulative-patches-1-to-4.patch
deleted file mode 100644
index e12ed4708..000000000
--- a/src/patches/mpfr-4.2.0-cumulative-patches-1-to-4.patch
+++ /dev/null
@@ -1,521 +0,0 @@
-diff -Naurd mpfr-4.2.0-a/PATCHES mpfr-4.2.0-b/PATCHES
---- mpfr-4.2.0-a/PATCHES	2023-04-17 21:17:39.748645280 +0000
-+++ mpfr-4.2.0-b/PATCHES	2023-04-17 21:17:39.792645218 +0000
-@@ -0,0 +1 @@
-+tsprintf-thousands
-diff -Naurd mpfr-4.2.0-a/VERSION mpfr-4.2.0-b/VERSION
---- mpfr-4.2.0-a/VERSION	2023-01-06 10:55:57.000000000 +0000
-+++ mpfr-4.2.0-b/VERSION	2023-04-17 21:17:39.792645218 +0000
-@@ -1 +1 @@
--4.2.0
-+4.2.0-p1
-diff -Naurd mpfr-4.2.0-a/src/mpfr.h mpfr-4.2.0-b/src/mpfr.h
---- mpfr-4.2.0-a/src/mpfr.h	2023-01-06 10:55:57.000000000 +0000
-+++ mpfr-4.2.0-b/src/mpfr.h	2023-04-17 21:17:39.788645224 +0000
-@@ -27,7 +27,7 @@
- #define MPFR_VERSION_MAJOR 4
- #define MPFR_VERSION_MINOR 2
- #define MPFR_VERSION_PATCHLEVEL 0
--#define MPFR_VERSION_STRING "4.2.0"
-+#define MPFR_VERSION_STRING "4.2.0-p1"
- 
- /* User macros:
-    MPFR_USE_FILE:        Define it to make MPFR define functions dealing
-diff -Naurd mpfr-4.2.0-a/src/version.c mpfr-4.2.0-b/src/version.c
---- mpfr-4.2.0-a/src/version.c	2023-01-06 10:55:57.000000000 +0000
-+++ mpfr-4.2.0-b/src/version.c	2023-04-17 21:17:39.792645218 +0000
-@@ -25,5 +25,5 @@
- const char *
- mpfr_get_version (void)
- {
--  return "4.2.0";
-+  return "4.2.0-p1";
- }
-diff -Naurd mpfr-4.2.0-a/tests/tsprintf.c mpfr-4.2.0-b/tests/tsprintf.c
---- mpfr-4.2.0-a/tests/tsprintf.c	2023-01-05 17:09:48.000000000 +0000
-+++ mpfr-4.2.0-b/tests/tsprintf.c	2023-04-17 21:17:39.784645229 +0000
-@@ -1715,7 +1715,25 @@
-   check_sprintf ("000000001,000", "%'013.4Rg", x);
- 
- #ifdef PRINTF_GROUPFLAG
--  check_vsprintf ("+01,234,567  :", "%0+ -'13.10Pd:", (mpfr_prec_t) 1234567);
-+  /* Do not test the thousands separator with a precision field larger
-+     than the number of digits (thus needing leading zeros), such as
-+     "%0+ -'13.10Pd:" (used up to MPFR 4.2.0), since the GNU libc is
-+     buggy: https://sourceware.org/bugzilla/show_bug.cgi?id=23432
-+     We don't know about the other implementations.
-+     This new test works fine with glibc up to 2.36, but fails with 2.37
-+     (as reported by Klaus Dittrich in the MPFR mailing-list); this is
-+     actually a bug introduced in glibc 2.37, not in MPFR:
-+       https://sourceware.org/bugzilla/show_bug.cgi?id=30068
-+     Since this bug can yield a buffer overflow (CVE-2023-25139), possibly
-+     affecting MPFR users, let us rather require a fix in glibc. This bug
-+     has been fixed in the 2.37 branch:
-+       https://sourceware.org/git/?p=glibc.git;a=commit;h=07b9521fc6
-+     If we wanted to check that and avoid a failure of the test because of
-+     a buggy C library (while MPFR would be consistent with the C library),
-+     we could compare the MPFR output with both the correct output and the
-+     output from the C library (possibly buggy). But to do that in a clean
-+     way, this would require a change in the check_vsprintf() call. */
-+  check_vsprintf ("+1,234,567   :", "%0+ -'13Pd:", (mpfr_prec_t) 1234567);
- #endif
- 
-   mpfr_clear (x);
-diff -Naurd mpfr-4.2.0-a/PATCHES mpfr-4.2.0-b/PATCHES
---- mpfr-4.2.0-a/PATCHES	2023-04-17 21:18:00.464616127 +0000
-+++ mpfr-4.2.0-b/PATCHES	2023-04-17 21:18:00.512616059 +0000
-@@ -0,0 +1 @@
-+ui_pow_ui-overflow
-diff -Naurd mpfr-4.2.0-a/VERSION mpfr-4.2.0-b/VERSION
---- mpfr-4.2.0-a/VERSION	2023-04-17 21:17:39.792645218 +0000
-+++ mpfr-4.2.0-b/VERSION	2023-04-17 21:18:00.512616059 +0000
-@@ -1 +1 @@
--4.2.0-p1
-+4.2.0-p2
-diff -Naurd mpfr-4.2.0-a/src/mpfr.h mpfr-4.2.0-b/src/mpfr.h
---- mpfr-4.2.0-a/src/mpfr.h	2023-04-17 21:17:39.788645224 +0000
-+++ mpfr-4.2.0-b/src/mpfr.h	2023-04-17 21:18:00.508616065 +0000
-@@ -27,7 +27,7 @@
- #define MPFR_VERSION_MAJOR 4
- #define MPFR_VERSION_MINOR 2
- #define MPFR_VERSION_PATCHLEVEL 0
--#define MPFR_VERSION_STRING "4.2.0-p1"
-+#define MPFR_VERSION_STRING "4.2.0-p2"
- 
- /* User macros:
-    MPFR_USE_FILE:        Define it to make MPFR define functions dealing
-diff -Naurd mpfr-4.2.0-a/src/ui_pow_ui.c mpfr-4.2.0-b/src/ui_pow_ui.c
---- mpfr-4.2.0-a/src/ui_pow_ui.c	2023-01-05 17:09:48.000000000 +0000
-+++ mpfr-4.2.0-b/src/ui_pow_ui.c	2023-04-17 21:18:00.504616070 +0000
-@@ -23,7 +23,7 @@
- #include "mpfr-impl.h"
- 
- int
--mpfr_ui_pow_ui (mpfr_ptr x, unsigned long int y, unsigned long int n,
-+mpfr_ui_pow_ui (mpfr_ptr x, unsigned long int k, unsigned long int n,
-                 mpfr_rnd_t rnd)
- {
-   mpfr_exp_t err;
-@@ -35,22 +35,28 @@
-   MPFR_ZIV_DECL (loop);
-   MPFR_SAVE_EXPO_DECL (expo);
- 
-+  MPFR_LOG_FUNC
-+    (("k=%lu n=%lu rnd=%d", k, n, rnd),
-+     ("y[%Pu]=%.*Rg inexact=%d",
-+      mpfr_get_prec (x), mpfr_log_prec, x, inexact));
-+
-   if (MPFR_UNLIKELY (n <= 1))
-     {
-       if (n == 1)
--        return mpfr_set_ui (x, y, rnd);     /* y^1 = y */
-+        return mpfr_set_ui (x, k, rnd);     /* k^1 = k */
-       else
--        return mpfr_set_ui (x, 1, rnd);     /* y^0 = 1 for any y */
-+        return mpfr_set_ui (x, 1, rnd);     /* k^0 = 1 for any k */
-     }
--  else if (MPFR_UNLIKELY (y <= 1))
-+  else if (MPFR_UNLIKELY (k <= 1))
-     {
--      if (y == 1)
-+      if (k == 1)
-         return mpfr_set_ui (x, 1, rnd);     /* 1^n = 1 for any n > 0 */
-       else
-         return mpfr_set_ui (x, 0, rnd);     /* 0^n = 0 for any n > 0 */
-     }
- 
--  for (size_n = 0, m = n; m; size_n++, m >>= 1);
-+  for (size_n = 0, m = n; m != 0; size_n++, m >>= 1)
-+    ;
- 
-   MPFR_SAVE_EXPO_MARK (expo);
-   prec = MPFR_PREC (x) + 3 + size_n;
-@@ -60,23 +66,55 @@
-   for (;;)
-     {
-       int i = size_n;
-+      unsigned int inex_res;
- 
--      inexact = mpfr_set_ui (res, y, MPFR_RNDU);
-+      inex_res = mpfr_set_ui (res, k, MPFR_RNDU);
-       err = 1;
-       /* now 2^(i-1) <= n < 2^i: i=1+floor(log2(n)) */
-       for (i -= 2; i >= 0; i--)
-         {
--          inexact |= mpfr_sqr (res, res, MPFR_RNDU);
-+          inex_res |= mpfr_sqr (res, res, MPFR_RNDU);
-           err++;
-           if (n & (1UL << i))
--            inexact |= mpfr_mul_ui (res, res, y, MPFR_RNDU);
-+            inex_res |= mpfr_mul_ui (res, res, k, MPFR_RNDU);
-         }
-+
-+      if (MPFR_UNLIKELY (MPFR_IS_INF (res)))
-+        {
-+          mpfr_t kf;
-+          mpz_t z;
-+          int size_k;
-+          MPFR_BLOCK_DECL (flags);
-+
-+          /* Let's handle the overflow by calling mpfr_pow_z.
-+             Alternatively, we could call mpfr_pow_ui; this would
-+             need a bit shorter code below, but mpfr_pow_ui handles
-+             the overflow by calling mpfr_pow_z, so that calling
-+             mpfr_pow_z directly should be a bit more efficient. */
-+
-+          MPFR_ZIV_FREE (loop);
-+          mpfr_clear (res);
-+          for (size_k = 0, m = k; m != 0; size_k++, m >>= 1)
-+            ;
-+          mpfr_init2 (kf, size_k);
-+          inexact = mpfr_set_ui (kf, k, MPFR_RNDN);
-+          MPFR_ASSERTD (inexact == 0);
-+          mpz_init (z);
-+          mpz_set_ui (z, n);
-+          MPFR_BLOCK (flags, inexact = mpfr_pow_z (x, kf, z, rnd););
-+          mpz_clear (z);
-+          mpfr_clear (kf);
-+          MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, flags);
-+          goto end;
-+        }
-+
-       /* since the loop is executed floor(log2(n)) times,
-          we have err = 1+floor(log2(n)).
-          Since prec >= MPFR_PREC(x) + 4 + floor(log2(n)), prec > err */
-       err = prec - err;
- 
--      if (MPFR_LIKELY (inexact == 0
-+      MPFR_LOG_VAR (res);
-+      if (MPFR_LIKELY (!inex_res
-                        || MPFR_CAN_ROUND (res, err, MPFR_PREC (x), rnd)))
-         break;
- 
-@@ -90,6 +128,7 @@
- 
-   mpfr_clear (res);
- 
-+ end:
-   MPFR_SAVE_EXPO_FREE (expo);
-   return mpfr_check_range (x, inexact, rnd);
- }
-diff -Naurd mpfr-4.2.0-a/src/version.c mpfr-4.2.0-b/src/version.c
---- mpfr-4.2.0-a/src/version.c	2023-04-17 21:17:39.792645218 +0000
-+++ mpfr-4.2.0-b/src/version.c	2023-04-17 21:18:00.512616059 +0000
-@@ -25,5 +25,5 @@
- const char *
- mpfr_get_version (void)
- {
--  return "4.2.0-p1";
-+  return "4.2.0-p2";
- }
-diff -Naurd mpfr-4.2.0-a/tests/tlog10.c mpfr-4.2.0-b/tests/tlog10.c
---- mpfr-4.2.0-a/tests/tlog10.c	2023-01-05 17:09:48.000000000 +0000
-+++ mpfr-4.2.0-b/tests/tlog10.c	2023-04-17 21:18:00.504616070 +0000
-@@ -49,6 +49,60 @@
- #define TEST_RANDOM_POS 8
- #include "tgeneric.c"
- 
-+/* On 2023-02-13, one gets an infinite loop in mpfr_log10 on both
-+   32-bit and 64-bit hosts when the precision is not large enough
-+   (precision 12 and below). */
-+static void
-+bug20230213 (void)
-+{
-+  mpfr_exp_t old_emin, old_emax, e;
-+  mpfr_t t, x, y0, y1, y2;
-+  int prec;
-+
-+  old_emin = mpfr_get_emin ();
-+  old_emax = mpfr_get_emax ();
-+
-+  set_emin (MPFR_EMIN_MIN);
-+  set_emax (MPFR_EMAX_MAX);
-+  e = mpfr_get_emax () - 1;
-+
-+  /* The precisions of t and y0 should be large enough to avoid
-+     a hard-to-round case for the target precisions. */
-+  mpfr_inits2 (64, t, y0, (mpfr_ptr) 0);
-+  mpfr_set_exp_t (y0, e, MPFR_RNDN);
-+  mpfr_log_ui (t, 10, MPFR_RNDN);
-+  mpfr_div (y0, y0, t, MPFR_RNDN);
-+  mpfr_log_ui (t, 2, MPFR_RNDN);
-+  mpfr_mul (y0, y0, t, MPFR_RNDN);
-+
-+  for (prec = 16; prec >= MPFR_PREC_MIN; prec--)
-+    {
-+      mpfr_inits2 (prec, x, y1, y2, (mpfr_ptr) 0);
-+      mpfr_set (y1, y0, MPFR_RNDN);
-+
-+      mpfr_set_ui_2exp (x, 1, e, MPFR_RNDN);
-+      mpfr_log10 (y2, x, MPFR_RNDN);
-+      MPFR_ASSERTN (MPFR_IS_PURE_FP (y2));
-+      MPFR_ASSERTN (MPFR_IS_POS (y2));
-+
-+      if (! mpfr_equal_p (y1, y2))
-+        {
-+          printf ("Error in bug20230213.\n");
-+          printf ("Expected ");
-+          mpfr_dump (y1);
-+          printf ("Got      ");
-+          mpfr_dump (y2);
-+          exit (1);
-+        }
-+      mpfr_clears (x, y1, y2, (mpfr_ptr) 0);
-+    }
-+
-+  mpfr_clears (t, y0, (mpfr_ptr) 0);
-+
-+  set_emin (old_emin);
-+  set_emax (old_emax);
-+}
-+
- int
- main (int argc, char *argv[])
- {
-@@ -112,6 +166,8 @@
-   mpfr_clear (x);
-   mpfr_clear (y);
- 
-+  bug20230213 ();
-+
-   data_check ("data/log10", mpfr_log10, "mpfr_log10");
- 
-   tests_end_mpfr ();
-diff -Naurd mpfr-4.2.0-a/tests/tui_pow.c mpfr-4.2.0-b/tests/tui_pow.c
---- mpfr-4.2.0-a/tests/tui_pow.c	2023-01-05 17:09:48.000000000 +0000
-+++ mpfr-4.2.0-b/tests/tui_pow.c	2023-04-17 21:18:00.504616070 +0000
-@@ -142,6 +142,37 @@
-   mpfr_clear (t);
- }
- 
-+static void
-+huge (void)
-+{
-+  mpfr_exp_t old_emin, old_emax;
-+  mpfr_t x;
-+
-+  old_emin = mpfr_get_emin ();
-+  old_emax = mpfr_get_emax ();
-+
-+  set_emin (MPFR_EMIN_MIN);
-+  set_emax (MPFR_EMAX_MAX);
-+
-+  mpfr_init2 (x, 8);
-+
-+  /* The purpose of this test is more to check that mpfr_ui_pow_ui
-+     terminates (without taking much memory) rather than checking
-+     the value of x. On 2023-02-13, the +Inf case was not handled
-+     in the Ziv iteration, yielding an infinite loop, affecting
-+     mpfr_log10 in particular. See
-+       commit 90de094f0d9c309daca707aa227470d810866616
-+  */
-+  mpfr_ui_pow_ui (x, 5, ULONG_MAX, MPFR_RNDN);
-+  if (MPFR_EMAX_MAX <= ULONG_MAX)  /* true with default _MPFR_EXP_FORMAT */
-+    MPFR_ASSERTN (MPFR_IS_INF (x));
-+
-+  mpfr_clear (x);
-+
-+  set_emin (old_emin);
-+  set_emax (old_emax);
-+}
-+
- int
- main (int argc, char *argv[])
- {
-@@ -180,6 +211,7 @@
-     }
- 
-   test1 ();
-+  huge ();
- 
-   {
-   mpfr_t z, t;
-diff -Naurd mpfr-4.2.0-a/PATCHES mpfr-4.2.0-b/PATCHES
---- mpfr-4.2.0-a/PATCHES	2023-04-17 21:18:26.860579184 +0000
-+++ mpfr-4.2.0-b/PATCHES	2023-04-17 21:18:26.904579122 +0000
-@@ -0,0 +1 @@
-+multibyte-decimal_point
-diff -Naurd mpfr-4.2.0-a/VERSION mpfr-4.2.0-b/VERSION
---- mpfr-4.2.0-a/VERSION	2023-04-17 21:18:00.512616059 +0000
-+++ mpfr-4.2.0-b/VERSION	2023-04-17 21:18:26.904579122 +0000
-@@ -1 +1 @@
--4.2.0-p2
-+4.2.0-p3
-diff -Naurd mpfr-4.2.0-a/src/mpfr.h mpfr-4.2.0-b/src/mpfr.h
---- mpfr-4.2.0-a/src/mpfr.h	2023-04-17 21:18:00.508616065 +0000
-+++ mpfr-4.2.0-b/src/mpfr.h	2023-04-17 21:18:26.900579128 +0000
-@@ -27,7 +27,7 @@
- #define MPFR_VERSION_MAJOR 4
- #define MPFR_VERSION_MINOR 2
- #define MPFR_VERSION_PATCHLEVEL 0
--#define MPFR_VERSION_STRING "4.2.0-p2"
-+#define MPFR_VERSION_STRING "4.2.0-p3"
- 
- /* User macros:
-    MPFR_USE_FILE:        Define it to make MPFR define functions dealing
-diff -Naurd mpfr-4.2.0-a/src/version.c mpfr-4.2.0-b/src/version.c
---- mpfr-4.2.0-a/src/version.c	2023-04-17 21:18:00.512616059 +0000
-+++ mpfr-4.2.0-b/src/version.c	2023-04-17 21:18:26.904579122 +0000
-@@ -25,5 +25,5 @@
- const char *
- mpfr_get_version (void)
- {
--  return "4.2.0-p2";
-+  return "4.2.0-p3";
- }
-diff -Naurd mpfr-4.2.0-a/tests/tfprintf.c mpfr-4.2.0-b/tests/tfprintf.c
---- mpfr-4.2.0-a/tests/tfprintf.c	2023-01-05 17:09:48.000000000 +0000
-+++ mpfr-4.2.0-b/tests/tfprintf.c	2023-04-17 21:18:26.896579133 +0000
-@@ -61,6 +61,12 @@
-       exit (1);                                                         \
-     }
- 
-+#if MPFR_LCONV_DPTS
-+#define DPLEN ((int) strlen (localeconv()->decimal_point))
-+#else
-+#define DPLEN 1
-+#endif
-+
- /* limit for random precision in random() */
- const int prec_max_printf = 5000;
- 
-@@ -195,12 +201,12 @@
-                   lo, &ulo);
-   check_length (2, ulo, 36, lu);
-   check_vfprintf (fout, "a. %hi, b. %*f, c. %Re%hn", ush, 3, f, mpfr, &ush);
--  check_length (3, ush, 46, hu);
-+  check_length (3, ush, 45 + DPLEN, hu);
-   check_vfprintf (fout, "a. %hi, b. %f, c. %#.2Rf%n", sh, d, mpfr, &i);
--  check_length (4, i, 29, d);
-+  check_length (4, i, 28 + DPLEN, d);
-   check_vfprintf (fout, "a. %R*A, b. %Fe, c. %i%zn", rnd, mpfr, mpf, sz,
-                   &sz);
--  check_length (5, (unsigned long) sz, 34, lu); /* no format specifier "%zu" in C90 */
-+  check_length (5, (unsigned long) sz, 33 + DPLEN, lu); /* no format specifier "%zu" in C90 */
-   check_vfprintf (fout, "a. %Pu, b. %c, c. %Zi%Zn", prec, ch, mpz, &mpz);
-   check_length_with_cmp (6, mpz, 17, mpz_cmp_ui (mpz, 17), Zi);
-   check_vfprintf (fout, "%% a. %#.0RNg, b. %Qx%Rn, c. %p", mpfr, mpq, &mpfr,
-@@ -224,7 +230,7 @@
- 
- #ifdef PRINTF_L
-   check_vfprintf (fout, "a. %RA, b. %Lf, c. %QX%zn", mpfr, ld, mpq, &sz);
--  check_length (9, (unsigned long) sz, 30, lu); /* no format specifier "%zu" in C90 */
-+  check_length (9, (unsigned long) sz, 29 + DPLEN, lu); /* no format specifier "%zu" in C90 */
- #endif
- 
- #ifndef NPRINTF_HH
-diff -Naurd mpfr-4.2.0-a/tests/tprintf.c mpfr-4.2.0-b/tests/tprintf.c
---- mpfr-4.2.0-a/tests/tprintf.c	2023-01-05 17:09:48.000000000 +0000
-+++ mpfr-4.2.0-b/tests/tprintf.c	2023-04-17 21:18:26.896579133 +0000
-@@ -68,6 +68,12 @@
-       exit (1);                                                         \
-     }
- 
-+#if MPFR_LCONV_DPTS
-+#define DPLEN ((int) strlen (localeconv()->decimal_point))
-+#else
-+#define DPLEN 1
-+#endif
-+
- /* limit for random precision in random() */
- const int prec_max_printf = 5000;
- /* boolean: is stdout redirected to a file ? */
-@@ -316,11 +322,11 @@
-   check_vprintf ("a. %c, b. %Rb, c. %u, d. %li%ln", i, mpfr, i, lo, &ulo);
-   check_length (2, ulo, 36, lu);
-   check_vprintf ("a. %hi, b. %*f, c. %Re%hn", ush, 3, f, mpfr, &ush);
--  check_length (3, ush, 46, hu);
-+  check_length (3, ush, 45 + DPLEN, hu);
-   check_vprintf ("a. %hi, b. %f, c. %#.2Rf%n", sh, d, mpfr, &i);
--  check_length (4, i, 29, d);
-+  check_length (4, i, 28 + DPLEN, d);
-   check_vprintf ("a. %R*A, b. %Fe, c. %i%zn", rnd, mpfr, mpf, sz, &sz);
--  check_length (5, (unsigned long) sz, 34, lu); /* no format specifier '%zu' in C90 */
-+  check_length (5, (unsigned long) sz, 33 + DPLEN, lu); /* no format specifier '%zu' in C90 */
-   check_vprintf ("a. %Pu, b. %c, c. %RUG, d. %Zi%Zn", prec, ch, mpfr, mpz, &mpz);
-   check_length_with_cmp (6, mpz, 24, mpz_cmp_ui (mpz, 24), Zi);
-   check_vprintf ("%% a. %#.0RNg, b. %Qx%Rn c. %p",
-@@ -344,7 +350,7 @@
- 
- #ifdef PRINTF_L
-   check_vprintf ("a. %RA, b. %Lf, c. %QX%zn", mpfr, ld, mpq, &sz);
--  check_length (9, (unsigned long) sz, 30, lu); /* no format specifier '%zu' in C90 */
-+  check_length (9, (unsigned long) sz, 29 + DPLEN, lu); /* no format specifier '%zu' in C90 */
- #endif
- 
- #ifndef NPRINTF_HH
-diff -Naurd mpfr-4.2.0-a/PATCHES mpfr-4.2.0-b/PATCHES
---- mpfr-4.2.0-a/PATCHES	2023-04-17 21:19:01.988530337 +0000
-+++ mpfr-4.2.0-b/PATCHES	2023-04-17 21:19:02.032530276 +0000
-@@ -0,0 +1 @@
-+rec_sqrt-zivloop
-diff -Naurd mpfr-4.2.0-a/VERSION mpfr-4.2.0-b/VERSION
---- mpfr-4.2.0-a/VERSION	2023-04-17 21:18:26.904579122 +0000
-+++ mpfr-4.2.0-b/VERSION	2023-04-17 21:19:02.032530276 +0000
-@@ -1 +1 @@
--4.2.0-p3
-+4.2.0-p4
-diff -Naurd mpfr-4.2.0-a/src/mpfr.h mpfr-4.2.0-b/src/mpfr.h
---- mpfr-4.2.0-a/src/mpfr.h	2023-04-17 21:18:26.900579128 +0000
-+++ mpfr-4.2.0-b/src/mpfr.h	2023-04-17 21:19:02.032530276 +0000
-@@ -27,7 +27,7 @@
- #define MPFR_VERSION_MAJOR 4
- #define MPFR_VERSION_MINOR 2
- #define MPFR_VERSION_PATCHLEVEL 0
--#define MPFR_VERSION_STRING "4.2.0-p3"
-+#define MPFR_VERSION_STRING "4.2.0-p4"
- 
- /* User macros:
-    MPFR_USE_FILE:        Define it to make MPFR define functions dealing
-diff -Naurd mpfr-4.2.0-a/src/rec_sqrt.c mpfr-4.2.0-b/src/rec_sqrt.c
---- mpfr-4.2.0-a/src/rec_sqrt.c	2023-01-05 17:09:48.000000000 +0000
-+++ mpfr-4.2.0-b/src/rec_sqrt.c	2023-04-17 21:19:02.024530287 +0000
-@@ -463,6 +463,7 @@
-   int s, cy, inex;
-   mpfr_limb_ptr x;
-   MPFR_TMP_DECL(marker);
-+  MPFR_ZIV_DECL (loop);
- 
-   MPFR_LOG_FUNC
-     (("x[%Pu]=%.*Rg rnd=%d", mpfr_get_prec (u), mpfr_log_prec, u, rnd_mode),
-@@ -530,6 +531,7 @@
-   wp = rp + 11;
-   if (wp < rn * GMP_NUMB_BITS)
-     wp = rn * GMP_NUMB_BITS;
-+  MPFR_ZIV_INIT (loop, wp);
-   for (;;)
-     {
-       MPFR_TMP_MARK (marker);
-@@ -561,8 +563,9 @@
-         }
-       MPFR_TMP_FREE(marker);
- 
--      wp += GMP_NUMB_BITS;
-+      MPFR_ZIV_NEXT (loop, wp);
-     }
-+  MPFR_ZIV_FREE (loop);
-   cy = mpfr_round_raw (MPFR_MANT(r), x, wp, 0, rp, rnd_mode, &inex);
-   MPFR_EXP(r) = - (MPFR_EXP(u) - 1 - s) / 2;
-   if (MPFR_UNLIKELY(cy != 0))
-diff -Naurd mpfr-4.2.0-a/src/version.c mpfr-4.2.0-b/src/version.c
---- mpfr-4.2.0-a/src/version.c	2023-04-17 21:18:26.904579122 +0000
-+++ mpfr-4.2.0-b/src/version.c	2023-04-17 21:19:02.032530276 +0000
-@@ -25,5 +25,5 @@
- const char *
- mpfr_get_version (void)
- {
--  return "4.2.0-p3";
-+  return "4.2.0-p4";
- }
-diff -Naurd mpfr-4.2.0-a/tests/trec_sqrt.c mpfr-4.2.0-b/tests/trec_sqrt.c
---- mpfr-4.2.0-a/tests/trec_sqrt.c	2023-01-05 17:09:48.000000000 +0000
-+++ mpfr-4.2.0-b/tests/trec_sqrt.c	2023-04-17 21:19:02.028530282 +0000
-@@ -242,6 +242,8 @@
-   data_check ("data/rec_sqrt", mpfr_rec_sqrt, "mpfr_rec_sqrt");
-   bad_cases (mpfr_rec_sqrt, pm2, "mpfr_rec_sqrt", 0, -256, 255, 4, 128,
-              800, 50);
-+  bad_cases (mpfr_rec_sqrt, pm2, "mpfr_rec_sqrt", 0, -256, 255, 9999, 9999,
-+             120000, 1);
- 
-  end:
-   tests_end_mpfr ();
diff --git a/src/patches/mpfr-4.2.0-cumulative-patches-1-to-9.patch b/src/patches/mpfr-4.2.0-cumulative-patches-1-to-9.patch
new file mode 100644
index 000000000..07fcf2592
--- /dev/null
+++ b/src/patches/mpfr-4.2.0-cumulative-patches-1-to-9.patch
@@ -0,0 +1,2046 @@
+diff -Naurd mpfr-4.2.0-a/PATCHES mpfr-4.2.0-b/PATCHES
+--- mpfr-4.2.0-a/PATCHES	2023-04-17 21:17:39.748645280 +0000
++++ mpfr-4.2.0-b/PATCHES	2023-04-17 21:17:39.792645218 +0000
+@@ -0,0 +1 @@
++tsprintf-thousands
+diff -Naurd mpfr-4.2.0-a/VERSION mpfr-4.2.0-b/VERSION
+--- mpfr-4.2.0-a/VERSION	2023-01-06 10:55:57.000000000 +0000
++++ mpfr-4.2.0-b/VERSION	2023-04-17 21:17:39.792645218 +0000
+@@ -1 +1 @@
+-4.2.0
++4.2.0-p1
+diff -Naurd mpfr-4.2.0-a/src/mpfr.h mpfr-4.2.0-b/src/mpfr.h
+--- mpfr-4.2.0-a/src/mpfr.h	2023-01-06 10:55:57.000000000 +0000
++++ mpfr-4.2.0-b/src/mpfr.h	2023-04-17 21:17:39.788645224 +0000
+@@ -27,7 +27,7 @@
+ #define MPFR_VERSION_MAJOR 4
+ #define MPFR_VERSION_MINOR 2
+ #define MPFR_VERSION_PATCHLEVEL 0
+-#define MPFR_VERSION_STRING "4.2.0"
++#define MPFR_VERSION_STRING "4.2.0-p1"
+ 
+ /* User macros:
+    MPFR_USE_FILE:        Define it to make MPFR define functions dealing
+diff -Naurd mpfr-4.2.0-a/src/version.c mpfr-4.2.0-b/src/version.c
+--- mpfr-4.2.0-a/src/version.c	2023-01-06 10:55:57.000000000 +0000
++++ mpfr-4.2.0-b/src/version.c	2023-04-17 21:17:39.792645218 +0000
+@@ -25,5 +25,5 @@
+ const char *
+ mpfr_get_version (void)
+ {
+-  return "4.2.0";
++  return "4.2.0-p1";
+ }
+diff -Naurd mpfr-4.2.0-a/tests/tsprintf.c mpfr-4.2.0-b/tests/tsprintf.c
+--- mpfr-4.2.0-a/tests/tsprintf.c	2023-01-05 17:09:48.000000000 +0000
++++ mpfr-4.2.0-b/tests/tsprintf.c	2023-04-17 21:17:39.784645229 +0000
+@@ -1715,7 +1715,25 @@
+   check_sprintf ("000000001,000", "%'013.4Rg", x);
+ 
+ #ifdef PRINTF_GROUPFLAG
+-  check_vsprintf ("+01,234,567  :", "%0+ -'13.10Pd:", (mpfr_prec_t) 1234567);
++  /* Do not test the thousands separator with a precision field larger
++     than the number of digits (thus needing leading zeros), such as
++     "%0+ -'13.10Pd:" (used up to MPFR 4.2.0), since the GNU libc is
++     buggy: https://sourceware.org/bugzilla/show_bug.cgi?id=23432
++     We don't know about the other implementations.
++     This new test works fine with glibc up to 2.36, but fails with 2.37
++     (as reported by Klaus Dittrich in the MPFR mailing-list); this is
++     actually a bug introduced in glibc 2.37, not in MPFR:
++       https://sourceware.org/bugzilla/show_bug.cgi?id=30068
++     Since this bug can yield a buffer overflow (CVE-2023-25139), possibly
++     affecting MPFR users, let us rather require a fix in glibc. This bug
++     has been fixed in the 2.37 branch:
++       https://sourceware.org/git/?p=glibc.git;a=commit;h=07b9521fc6
++     If we wanted to check that and avoid a failure of the test because of
++     a buggy C library (while MPFR would be consistent with the C library),
++     we could compare the MPFR output with both the correct output and the
++     output from the C library (possibly buggy). But to do that in a clean
++     way, this would require a change in the check_vsprintf() call. */
++  check_vsprintf ("+1,234,567   :", "%0+ -'13Pd:", (mpfr_prec_t) 1234567);
+ #endif
+ 
+   mpfr_clear (x);
+diff -Naurd mpfr-4.2.0-a/PATCHES mpfr-4.2.0-b/PATCHES
+--- mpfr-4.2.0-a/PATCHES	2023-04-17 21:18:00.464616127 +0000
++++ mpfr-4.2.0-b/PATCHES	2023-04-17 21:18:00.512616059 +0000
+@@ -0,0 +1 @@
++ui_pow_ui-overflow
+diff -Naurd mpfr-4.2.0-a/VERSION mpfr-4.2.0-b/VERSION
+--- mpfr-4.2.0-a/VERSION	2023-04-17 21:17:39.792645218 +0000
++++ mpfr-4.2.0-b/VERSION	2023-04-17 21:18:00.512616059 +0000
+@@ -1 +1 @@
+-4.2.0-p1
++4.2.0-p2
+diff -Naurd mpfr-4.2.0-a/src/mpfr.h mpfr-4.2.0-b/src/mpfr.h
+--- mpfr-4.2.0-a/src/mpfr.h	2023-04-17 21:17:39.788645224 +0000
++++ mpfr-4.2.0-b/src/mpfr.h	2023-04-17 21:18:00.508616065 +0000
+@@ -27,7 +27,7 @@
+ #define MPFR_VERSION_MAJOR 4
+ #define MPFR_VERSION_MINOR 2
+ #define MPFR_VERSION_PATCHLEVEL 0
+-#define MPFR_VERSION_STRING "4.2.0-p1"
++#define MPFR_VERSION_STRING "4.2.0-p2"
+ 
+ /* User macros:
+    MPFR_USE_FILE:        Define it to make MPFR define functions dealing
+diff -Naurd mpfr-4.2.0-a/src/ui_pow_ui.c mpfr-4.2.0-b/src/ui_pow_ui.c
+--- mpfr-4.2.0-a/src/ui_pow_ui.c	2023-01-05 17:09:48.000000000 +0000
++++ mpfr-4.2.0-b/src/ui_pow_ui.c	2023-04-17 21:18:00.504616070 +0000
+@@ -23,7 +23,7 @@
+ #include "mpfr-impl.h"
+ 
+ int
+-mpfr_ui_pow_ui (mpfr_ptr x, unsigned long int y, unsigned long int n,
++mpfr_ui_pow_ui (mpfr_ptr x, unsigned long int k, unsigned long int n,
+                 mpfr_rnd_t rnd)
+ {
+   mpfr_exp_t err;
+@@ -35,22 +35,28 @@
+   MPFR_ZIV_DECL (loop);
+   MPFR_SAVE_EXPO_DECL (expo);
+ 
++  MPFR_LOG_FUNC
++    (("k=%lu n=%lu rnd=%d", k, n, rnd),
++     ("y[%Pu]=%.*Rg inexact=%d",
++      mpfr_get_prec (x), mpfr_log_prec, x, inexact));
++
+   if (MPFR_UNLIKELY (n <= 1))
+     {
+       if (n == 1)
+-        return mpfr_set_ui (x, y, rnd);     /* y^1 = y */
++        return mpfr_set_ui (x, k, rnd);     /* k^1 = k */
+       else
+-        return mpfr_set_ui (x, 1, rnd);     /* y^0 = 1 for any y */
++        return mpfr_set_ui (x, 1, rnd);     /* k^0 = 1 for any k */
+     }
+-  else if (MPFR_UNLIKELY (y <= 1))
++  else if (MPFR_UNLIKELY (k <= 1))
+     {
+-      if (y == 1)
++      if (k == 1)
+         return mpfr_set_ui (x, 1, rnd);     /* 1^n = 1 for any n > 0 */
+       else
+         return mpfr_set_ui (x, 0, rnd);     /* 0^n = 0 for any n > 0 */
+     }
+ 
+-  for (size_n = 0, m = n; m; size_n++, m >>= 1);
++  for (size_n = 0, m = n; m != 0; size_n++, m >>= 1)
++    ;
+ 
+   MPFR_SAVE_EXPO_MARK (expo);
+   prec = MPFR_PREC (x) + 3 + size_n;
+@@ -60,23 +66,55 @@
+   for (;;)
+     {
+       int i = size_n;
++      unsigned int inex_res;
+ 
+-      inexact = mpfr_set_ui (res, y, MPFR_RNDU);
++      inex_res = mpfr_set_ui (res, k, MPFR_RNDU);
+       err = 1;
+       /* now 2^(i-1) <= n < 2^i: i=1+floor(log2(n)) */
+       for (i -= 2; i >= 0; i--)
+         {
+-          inexact |= mpfr_sqr (res, res, MPFR_RNDU);
++          inex_res |= mpfr_sqr (res, res, MPFR_RNDU);
+           err++;
+           if (n & (1UL << i))
+-            inexact |= mpfr_mul_ui (res, res, y, MPFR_RNDU);
++            inex_res |= mpfr_mul_ui (res, res, k, MPFR_RNDU);
+         }
++
++      if (MPFR_UNLIKELY (MPFR_IS_INF (res)))
++        {
++          mpfr_t kf;
++          mpz_t z;
++          int size_k;
++          MPFR_BLOCK_DECL (flags);
++
++          /* Let's handle the overflow by calling mpfr_pow_z.
++             Alternatively, we could call mpfr_pow_ui; this would
++             need a bit shorter code below, but mpfr_pow_ui handles
++             the overflow by calling mpfr_pow_z, so that calling
++             mpfr_pow_z directly should be a bit more efficient. */
++
++          MPFR_ZIV_FREE (loop);
++          mpfr_clear (res);
++          for (size_k = 0, m = k; m != 0; size_k++, m >>= 1)
++            ;
++          mpfr_init2 (kf, size_k);
++          inexact = mpfr_set_ui (kf, k, MPFR_RNDN);
++          MPFR_ASSERTD (inexact == 0);
++          mpz_init (z);
++          mpz_set_ui (z, n);
++          MPFR_BLOCK (flags, inexact = mpfr_pow_z (x, kf, z, rnd););
++          mpz_clear (z);
++          mpfr_clear (kf);
++          MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, flags);
++          goto end;
++        }
++
+       /* since the loop is executed floor(log2(n)) times,
+          we have err = 1+floor(log2(n)).
+          Since prec >= MPFR_PREC(x) + 4 + floor(log2(n)), prec > err */
+       err = prec - err;
+ 
+-      if (MPFR_LIKELY (inexact == 0
++      MPFR_LOG_VAR (res);
++      if (MPFR_LIKELY (!inex_res
+                        || MPFR_CAN_ROUND (res, err, MPFR_PREC (x), rnd)))
+         break;
+ 
+@@ -90,6 +128,7 @@
+ 
+   mpfr_clear (res);
+ 
++ end:
+   MPFR_SAVE_EXPO_FREE (expo);
+   return mpfr_check_range (x, inexact, rnd);
+ }
+diff -Naurd mpfr-4.2.0-a/src/version.c mpfr-4.2.0-b/src/version.c
+--- mpfr-4.2.0-a/src/version.c	2023-04-17 21:17:39.792645218 +0000
++++ mpfr-4.2.0-b/src/version.c	2023-04-17 21:18:00.512616059 +0000
+@@ -25,5 +25,5 @@
+ const char *
+ mpfr_get_version (void)
+ {
+-  return "4.2.0-p1";
++  return "4.2.0-p2";
+ }
+diff -Naurd mpfr-4.2.0-a/tests/tlog10.c mpfr-4.2.0-b/tests/tlog10.c
+--- mpfr-4.2.0-a/tests/tlog10.c	2023-01-05 17:09:48.000000000 +0000
++++ mpfr-4.2.0-b/tests/tlog10.c	2023-04-17 21:18:00.504616070 +0000
+@@ -49,6 +49,60 @@
+ #define TEST_RANDOM_POS 8
+ #include "tgeneric.c"
+ 
++/* On 2023-02-13, one gets an infinite loop in mpfr_log10 on both
++   32-bit and 64-bit hosts when the precision is not large enough
++   (precision 12 and below). */
++static void
++bug20230213 (void)
++{
++  mpfr_exp_t old_emin, old_emax, e;
++  mpfr_t t, x, y0, y1, y2;
++  int prec;
++
++  old_emin = mpfr_get_emin ();
++  old_emax = mpfr_get_emax ();
++
++  set_emin (MPFR_EMIN_MIN);
++  set_emax (MPFR_EMAX_MAX);
++  e = mpfr_get_emax () - 1;
++
++  /* The precisions of t and y0 should be large enough to avoid
++     a hard-to-round case for the target precisions. */
++  mpfr_inits2 (64, t, y0, (mpfr_ptr) 0);
++  mpfr_set_exp_t (y0, e, MPFR_RNDN);
++  mpfr_log_ui (t, 10, MPFR_RNDN);
++  mpfr_div (y0, y0, t, MPFR_RNDN);
++  mpfr_log_ui (t, 2, MPFR_RNDN);
++  mpfr_mul (y0, y0, t, MPFR_RNDN);
++
++  for (prec = 16; prec >= MPFR_PREC_MIN; prec--)
++    {
++      mpfr_inits2 (prec, x, y1, y2, (mpfr_ptr) 0);
++      mpfr_set (y1, y0, MPFR_RNDN);
++
++      mpfr_set_ui_2exp (x, 1, e, MPFR_RNDN);
++      mpfr_log10 (y2, x, MPFR_RNDN);
++      MPFR_ASSERTN (MPFR_IS_PURE_FP (y2));
++      MPFR_ASSERTN (MPFR_IS_POS (y2));
++
++      if (! mpfr_equal_p (y1, y2))
++        {
++          printf ("Error in bug20230213.\n");
++          printf ("Expected ");
++          mpfr_dump (y1);
++          printf ("Got      ");
++          mpfr_dump (y2);
++          exit (1);
++        }
++      mpfr_clears (x, y1, y2, (mpfr_ptr) 0);
++    }
++
++  mpfr_clears (t, y0, (mpfr_ptr) 0);
++
++  set_emin (old_emin);
++  set_emax (old_emax);
++}
++
+ int
+ main (int argc, char *argv[])
+ {
+@@ -112,6 +166,8 @@
+   mpfr_clear (x);
+   mpfr_clear (y);
+ 
++  bug20230213 ();
++
+   data_check ("data/log10", mpfr_log10, "mpfr_log10");
+ 
+   tests_end_mpfr ();
+diff -Naurd mpfr-4.2.0-a/tests/tui_pow.c mpfr-4.2.0-b/tests/tui_pow.c
+--- mpfr-4.2.0-a/tests/tui_pow.c	2023-01-05 17:09:48.000000000 +0000
++++ mpfr-4.2.0-b/tests/tui_pow.c	2023-04-17 21:18:00.504616070 +0000
+@@ -142,6 +142,37 @@
+   mpfr_clear (t);
+ }
+ 
++static void
++huge (void)
++{
++  mpfr_exp_t old_emin, old_emax;
++  mpfr_t x;
++
++  old_emin = mpfr_get_emin ();
++  old_emax = mpfr_get_emax ();
++
++  set_emin (MPFR_EMIN_MIN);
++  set_emax (MPFR_EMAX_MAX);
++
++  mpfr_init2 (x, 8);
++
++  /* The purpose of this test is more to check that mpfr_ui_pow_ui
++     terminates (without taking much memory) rather than checking
++     the value of x. On 2023-02-13, the +Inf case was not handled
++     in the Ziv iteration, yielding an infinite loop, affecting
++     mpfr_log10 in particular. See
++       commit 90de094f0d9c309daca707aa227470d810866616
++  */
++  mpfr_ui_pow_ui (x, 5, ULONG_MAX, MPFR_RNDN);
++  if (MPFR_EMAX_MAX <= ULONG_MAX)  /* true with default _MPFR_EXP_FORMAT */
++    MPFR_ASSERTN (MPFR_IS_INF (x));
++
++  mpfr_clear (x);
++
++  set_emin (old_emin);
++  set_emax (old_emax);
++}
++
+ int
+ main (int argc, char *argv[])
+ {
+@@ -180,6 +211,7 @@
+     }
+ 
+   test1 ();
++  huge ();
+ 
+   {
+   mpfr_t z, t;
+diff -Naurd mpfr-4.2.0-a/PATCHES mpfr-4.2.0-b/PATCHES
+--- mpfr-4.2.0-a/PATCHES	2023-04-17 21:18:26.860579184 +0000
++++ mpfr-4.2.0-b/PATCHES	2023-04-17 21:18:26.904579122 +0000
+@@ -0,0 +1 @@
++multibyte-decimal_point
+diff -Naurd mpfr-4.2.0-a/VERSION mpfr-4.2.0-b/VERSION
+--- mpfr-4.2.0-a/VERSION	2023-04-17 21:18:00.512616059 +0000
++++ mpfr-4.2.0-b/VERSION	2023-04-17 21:18:26.904579122 +0000
+@@ -1 +1 @@
+-4.2.0-p2
++4.2.0-p3
+diff -Naurd mpfr-4.2.0-a/src/mpfr.h mpfr-4.2.0-b/src/mpfr.h
+--- mpfr-4.2.0-a/src/mpfr.h	2023-04-17 21:18:00.508616065 +0000
++++ mpfr-4.2.0-b/src/mpfr.h	2023-04-17 21:18:26.900579128 +0000
+@@ -27,7 +27,7 @@
+ #define MPFR_VERSION_MAJOR 4
+ #define MPFR_VERSION_MINOR 2
+ #define MPFR_VERSION_PATCHLEVEL 0
+-#define MPFR_VERSION_STRING "4.2.0-p2"
++#define MPFR_VERSION_STRING "4.2.0-p3"
+ 
+ /* User macros:
+    MPFR_USE_FILE:        Define it to make MPFR define functions dealing
+diff -Naurd mpfr-4.2.0-a/src/version.c mpfr-4.2.0-b/src/version.c
+--- mpfr-4.2.0-a/src/version.c	2023-04-17 21:18:00.512616059 +0000
++++ mpfr-4.2.0-b/src/version.c	2023-04-17 21:18:26.904579122 +0000
+@@ -25,5 +25,5 @@
+ const char *
+ mpfr_get_version (void)
+ {
+-  return "4.2.0-p2";
++  return "4.2.0-p3";
+ }
+diff -Naurd mpfr-4.2.0-a/tests/tfprintf.c mpfr-4.2.0-b/tests/tfprintf.c
+--- mpfr-4.2.0-a/tests/tfprintf.c	2023-01-05 17:09:48.000000000 +0000
++++ mpfr-4.2.0-b/tests/tfprintf.c	2023-04-17 21:18:26.896579133 +0000
+@@ -61,6 +61,12 @@
+       exit (1);                                                         \
+     }
+ 
++#if MPFR_LCONV_DPTS
++#define DPLEN ((int) strlen (localeconv()->decimal_point))
++#else
++#define DPLEN 1
++#endif
++
+ /* limit for random precision in random() */
+ const int prec_max_printf = 5000;
+ 
+@@ -195,12 +201,12 @@
+                   lo, &ulo);
+   check_length (2, ulo, 36, lu);
+   check_vfprintf (fout, "a. %hi, b. %*f, c. %Re%hn", ush, 3, f, mpfr, &ush);
+-  check_length (3, ush, 46, hu);
++  check_length (3, ush, 45 + DPLEN, hu);
+   check_vfprintf (fout, "a. %hi, b. %f, c. %#.2Rf%n", sh, d, mpfr, &i);
+-  check_length (4, i, 29, d);
++  check_length (4, i, 28 + DPLEN, d);
+   check_vfprintf (fout, "a. %R*A, b. %Fe, c. %i%zn", rnd, mpfr, mpf, sz,
+                   &sz);
+-  check_length (5, (unsigned long) sz, 34, lu); /* no format specifier "%zu" in C90 */
++  check_length (5, (unsigned long) sz, 33 + DPLEN, lu); /* no format specifier "%zu" in C90 */
+   check_vfprintf (fout, "a. %Pu, b. %c, c. %Zi%Zn", prec, ch, mpz, &mpz);
+   check_length_with_cmp (6, mpz, 17, mpz_cmp_ui (mpz, 17), Zi);
+   check_vfprintf (fout, "%% a. %#.0RNg, b. %Qx%Rn, c. %p", mpfr, mpq, &mpfr,
+@@ -224,7 +230,7 @@
+ 
+ #ifdef PRINTF_L
+   check_vfprintf (fout, "a. %RA, b. %Lf, c. %QX%zn", mpfr, ld, mpq, &sz);
+-  check_length (9, (unsigned long) sz, 30, lu); /* no format specifier "%zu" in C90 */
++  check_length (9, (unsigned long) sz, 29 + DPLEN, lu); /* no format specifier "%zu" in C90 */
+ #endif
+ 
+ #ifndef NPRINTF_HH
+diff -Naurd mpfr-4.2.0-a/tests/tprintf.c mpfr-4.2.0-b/tests/tprintf.c
+--- mpfr-4.2.0-a/tests/tprintf.c	2023-01-05 17:09:48.000000000 +0000
++++ mpfr-4.2.0-b/tests/tprintf.c	2023-04-17 21:18:26.896579133 +0000
+@@ -68,6 +68,12 @@
+       exit (1);                                                         \
+     }
+ 
++#if MPFR_LCONV_DPTS
++#define DPLEN ((int) strlen (localeconv()->decimal_point))
++#else
++#define DPLEN 1
++#endif
++
+ /* limit for random precision in random() */
+ const int prec_max_printf = 5000;
+ /* boolean: is stdout redirected to a file ? */
+@@ -316,11 +322,11 @@
+   check_vprintf ("a. %c, b. %Rb, c. %u, d. %li%ln", i, mpfr, i, lo, &ulo);
+   check_length (2, ulo, 36, lu);
+   check_vprintf ("a. %hi, b. %*f, c. %Re%hn", ush, 3, f, mpfr, &ush);
+-  check_length (3, ush, 46, hu);
++  check_length (3, ush, 45 + DPLEN, hu);
+   check_vprintf ("a. %hi, b. %f, c. %#.2Rf%n", sh, d, mpfr, &i);
+-  check_length (4, i, 29, d);
++  check_length (4, i, 28 + DPLEN, d);
+   check_vprintf ("a. %R*A, b. %Fe, c. %i%zn", rnd, mpfr, mpf, sz, &sz);
+-  check_length (5, (unsigned long) sz, 34, lu); /* no format specifier '%zu' in C90 */
++  check_length (5, (unsigned long) sz, 33 + DPLEN, lu); /* no format specifier '%zu' in C90 */
+   check_vprintf ("a. %Pu, b. %c, c. %RUG, d. %Zi%Zn", prec, ch, mpfr, mpz, &mpz);
+   check_length_with_cmp (6, mpz, 24, mpz_cmp_ui (mpz, 24), Zi);
+   check_vprintf ("%% a. %#.0RNg, b. %Qx%Rn c. %p",
+@@ -344,7 +350,7 @@
+ 
+ #ifdef PRINTF_L
+   check_vprintf ("a. %RA, b. %Lf, c. %QX%zn", mpfr, ld, mpq, &sz);
+-  check_length (9, (unsigned long) sz, 30, lu); /* no format specifier '%zu' in C90 */
++  check_length (9, (unsigned long) sz, 29 + DPLEN, lu); /* no format specifier '%zu' in C90 */
+ #endif
+ 
+ #ifndef NPRINTF_HH
+diff -Naurd mpfr-4.2.0-a/PATCHES mpfr-4.2.0-b/PATCHES
+--- mpfr-4.2.0-a/PATCHES	2023-04-17 21:19:01.988530337 +0000
++++ mpfr-4.2.0-b/PATCHES	2023-04-17 21:19:02.032530276 +0000
+@@ -0,0 +1 @@
++rec_sqrt-zivloop
+diff -Naurd mpfr-4.2.0-a/VERSION mpfr-4.2.0-b/VERSION
+--- mpfr-4.2.0-a/VERSION	2023-04-17 21:18:26.904579122 +0000
++++ mpfr-4.2.0-b/VERSION	2023-04-17 21:19:02.032530276 +0000
+@@ -1 +1 @@
+-4.2.0-p3
++4.2.0-p4
+diff -Naurd mpfr-4.2.0-a/src/mpfr.h mpfr-4.2.0-b/src/mpfr.h
+--- mpfr-4.2.0-a/src/mpfr.h	2023-04-17 21:18:26.900579128 +0000
++++ mpfr-4.2.0-b/src/mpfr.h	2023-04-17 21:19:02.032530276 +0000
+@@ -27,7 +27,7 @@
+ #define MPFR_VERSION_MAJOR 4
+ #define MPFR_VERSION_MINOR 2
+ #define MPFR_VERSION_PATCHLEVEL 0
+-#define MPFR_VERSION_STRING "4.2.0-p3"
++#define MPFR_VERSION_STRING "4.2.0-p4"
+ 
+ /* User macros:
+    MPFR_USE_FILE:        Define it to make MPFR define functions dealing
+diff -Naurd mpfr-4.2.0-a/src/rec_sqrt.c mpfr-4.2.0-b/src/rec_sqrt.c
+--- mpfr-4.2.0-a/src/rec_sqrt.c	2023-01-05 17:09:48.000000000 +0000
++++ mpfr-4.2.0-b/src/rec_sqrt.c	2023-04-17 21:19:02.024530287 +0000
+@@ -463,6 +463,7 @@
+   int s, cy, inex;
+   mpfr_limb_ptr x;
+   MPFR_TMP_DECL(marker);
++  MPFR_ZIV_DECL (loop);
+ 
+   MPFR_LOG_FUNC
+     (("x[%Pu]=%.*Rg rnd=%d", mpfr_get_prec (u), mpfr_log_prec, u, rnd_mode),
+@@ -530,6 +531,7 @@
+   wp = rp + 11;
+   if (wp < rn * GMP_NUMB_BITS)
+     wp = rn * GMP_NUMB_BITS;
++  MPFR_ZIV_INIT (loop, wp);
+   for (;;)
+     {
+       MPFR_TMP_MARK (marker);
+@@ -561,8 +563,9 @@
+         }
+       MPFR_TMP_FREE(marker);
+ 
+-      wp += GMP_NUMB_BITS;
++      MPFR_ZIV_NEXT (loop, wp);
+     }
++  MPFR_ZIV_FREE (loop);
+   cy = mpfr_round_raw (MPFR_MANT(r), x, wp, 0, rp, rnd_mode, &inex);
+   MPFR_EXP(r) = - (MPFR_EXP(u) - 1 - s) / 2;
+   if (MPFR_UNLIKELY(cy != 0))
+diff -Naurd mpfr-4.2.0-a/src/version.c mpfr-4.2.0-b/src/version.c
+--- mpfr-4.2.0-a/src/version.c	2023-04-17 21:18:26.904579122 +0000
++++ mpfr-4.2.0-b/src/version.c	2023-04-17 21:19:02.032530276 +0000
+@@ -25,5 +25,5 @@
+ const char *
+ mpfr_get_version (void)
+ {
+-  return "4.2.0-p3";
++  return "4.2.0-p4";
+ }
+diff -Naurd mpfr-4.2.0-a/tests/trec_sqrt.c mpfr-4.2.0-b/tests/trec_sqrt.c
+--- mpfr-4.2.0-a/tests/trec_sqrt.c	2023-01-05 17:09:48.000000000 +0000
++++ mpfr-4.2.0-b/tests/trec_sqrt.c	2023-04-17 21:19:02.028530282 +0000
+@@ -242,6 +242,8 @@
+   data_check ("data/rec_sqrt", mpfr_rec_sqrt, "mpfr_rec_sqrt");
+   bad_cases (mpfr_rec_sqrt, pm2, "mpfr_rec_sqrt", 0, -256, 255, 4, 128,
+              800, 50);
++  bad_cases (mpfr_rec_sqrt, pm2, "mpfr_rec_sqrt", 0, -256, 255, 9999, 9999,
++             120000, 1);
+ 
+  end:
+   tests_end_mpfr ();
+diff -Naurd mpfr-4.2.0-a/PATCHES mpfr-4.2.0-b/PATCHES
+--- mpfr-4.2.0-a/PATCHES	2023-05-12 15:05:00.989811960 +0000
++++ mpfr-4.2.0-b/PATCHES	2023-05-12 15:05:01.085811835 +0000
+@@ -0,0 +1 @@
++reldiff
+diff -Naurd mpfr-4.2.0-a/VERSION mpfr-4.2.0-b/VERSION
+--- mpfr-4.2.0-a/VERSION	2023-04-17 21:19:02.032530276 +0000
++++ mpfr-4.2.0-b/VERSION	2023-05-12 15:05:01.085811835 +0000
+@@ -1 +1 @@
+-4.2.0-p4
++4.2.0-p5
+diff -Naurd mpfr-4.2.0-a/src/mpfr.h mpfr-4.2.0-b/src/mpfr.h
+--- mpfr-4.2.0-a/src/mpfr.h	2023-04-17 21:19:02.032530276 +0000
++++ mpfr-4.2.0-b/src/mpfr.h	2023-05-12 15:05:01.077811846 +0000
+@@ -27,7 +27,7 @@
+ #define MPFR_VERSION_MAJOR 4
+ #define MPFR_VERSION_MINOR 2
+ #define MPFR_VERSION_PATCHLEVEL 0
+-#define MPFR_VERSION_STRING "4.2.0-p4"
++#define MPFR_VERSION_STRING "4.2.0-p5"
+ 
+ /* User macros:
+    MPFR_USE_FILE:        Define it to make MPFR define functions dealing
+diff -Naurd mpfr-4.2.0-a/src/reldiff.c mpfr-4.2.0-b/src/reldiff.c
+--- mpfr-4.2.0-a/src/reldiff.c	2023-01-05 17:09:48.000000000 +0000
++++ mpfr-4.2.0-b/src/reldiff.c	2023-05-12 15:05:01.069811856 +0000
+@@ -30,31 +30,25 @@
+ 
+   if (MPFR_ARE_SINGULAR (b, c))
+     {
+-      if (MPFR_IS_NAN(b) || MPFR_IS_NAN(c))
+-        {
+-          MPFR_SET_NAN(a);
+-          return;
+-        }
+-      else if (MPFR_IS_INF(b))
++      if (MPFR_IS_NAN (b) || MPFR_IS_INF (b) || MPFR_IS_NAN (c) ||
++          (MPFR_IS_ZERO (b) && MPFR_IS_ZERO (c)))
+         {
+-          if (MPFR_IS_INF (c) && (MPFR_SIGN (c) == MPFR_SIGN (b)))
+-            MPFR_SET_ZERO(a);
+-          else
+-            MPFR_SET_NAN(a);
++          MPFR_SET_NAN (a);
+           return;
+         }
+-      else if (MPFR_IS_INF(c))
++      if (MPFR_IS_ZERO (b) || MPFR_IS_INF (c))
+         {
+           MPFR_SET_SAME_SIGN (a, b);
+           MPFR_SET_INF (a);
+           return;
+         }
+-      else if (MPFR_IS_ZERO(b)) /* reldiff = abs(c)/c = sign(c) */
+-        {
+-          mpfr_set_si (a, MPFR_INT_SIGN (c), rnd_mode);
+-          return;
+-        }
+-      /* Fall through */
++      /* The case c = 0 with b regular, which should give sign(b) exactly,
++         cannot be optimized here as it is documented in the MPFR manual
++         that this function just computes abs(b-c)/b using the precision
++         of a and the rounding mode rnd_mode for all operations. So let's
++         prefer the potentially "incorrect" result. Note that the correct
++         result is not necessarily better because if could break properties
++         (like monotonicity?) implied by the documentation. */
+     }
+ 
+   if (a == b)
+@@ -64,8 +58,8 @@
+     }
+ 
+   mpfr_sub (a, b, c, rnd_mode);
+-  mpfr_abs (a, a, rnd_mode); /* for compatibility with MPF */
+-  mpfr_div (a, a, (a == b) ? b_copy : b, rnd_mode);
++  MPFR_SET_SIGN (a, 1);
++  mpfr_div (a, a, a == b ? b_copy : b, rnd_mode);
+ 
+   if (a == b)
+     mpfr_clear (b_copy);
+diff -Naurd mpfr-4.2.0-a/src/version.c mpfr-4.2.0-b/src/version.c
+--- mpfr-4.2.0-a/src/version.c	2023-04-17 21:19:02.032530276 +0000
++++ mpfr-4.2.0-b/src/version.c	2023-05-12 15:05:01.081811839 +0000
+@@ -25,5 +25,5 @@
+ const char *
+ mpfr_get_version (void)
+ {
+-  return "4.2.0-p4";
++  return "4.2.0-p5";
+ }
+diff -Naurd mpfr-4.2.0-a/PATCHES mpfr-4.2.0-b/PATCHES
+--- mpfr-4.2.0-a/PATCHES	2023-05-12 15:06:11.789722083 +0000
++++ mpfr-4.2.0-b/PATCHES	2023-05-12 15:06:11.885721962 +0000
+@@ -0,0 +1 @@
++tests-reuse
+diff -Naurd mpfr-4.2.0-a/VERSION mpfr-4.2.0-b/VERSION
+--- mpfr-4.2.0-a/VERSION	2023-05-12 15:05:01.085811835 +0000
++++ mpfr-4.2.0-b/VERSION	2023-05-12 15:06:11.885721962 +0000
+@@ -1 +1 @@
+-4.2.0-p5
++4.2.0-p6
+diff -Naurd mpfr-4.2.0-a/src/mpfr.h mpfr-4.2.0-b/src/mpfr.h
+--- mpfr-4.2.0-a/src/mpfr.h	2023-05-12 15:05:01.077811846 +0000
++++ mpfr-4.2.0-b/src/mpfr.h	2023-05-12 15:06:11.877721972 +0000
+@@ -27,7 +27,7 @@
+ #define MPFR_VERSION_MAJOR 4
+ #define MPFR_VERSION_MINOR 2
+ #define MPFR_VERSION_PATCHLEVEL 0
+-#define MPFR_VERSION_STRING "4.2.0-p5"
++#define MPFR_VERSION_STRING "4.2.0-p6"
+ 
+ /* User macros:
+    MPFR_USE_FILE:        Define it to make MPFR define functions dealing
+diff -Naurd mpfr-4.2.0-a/src/version.c mpfr-4.2.0-b/src/version.c
+--- mpfr-4.2.0-a/src/version.c	2023-05-12 15:05:01.081811839 +0000
++++ mpfr-4.2.0-b/src/version.c	2023-05-12 15:06:11.885721962 +0000
+@@ -25,5 +25,5 @@
+ const char *
+ mpfr_get_version (void)
+ {
+-  return "4.2.0-p5";
++  return "4.2.0-p6";
+ }
+diff -Naurd mpfr-4.2.0-a/tests/reuse.c mpfr-4.2.0-b/tests/reuse.c
+--- mpfr-4.2.0-a/tests/reuse.c	2023-01-05 17:09:48.000000000 +0000
++++ mpfr-4.2.0-b/tests/reuse.c	2023-05-12 15:06:11.869721983 +0000
+@@ -78,22 +78,16 @@
+       mpfr_const_pi (x, MPFR_RNDN);
+       MPFR_SET_EXP (x, MPFR_GET_EXP (x)-1);
+       break;
+-    default:
++    case 11:
+       mpfr_urandomb (x, RANDS);
+       if (RAND_BOOL ())
+         mpfr_neg (x, x, MPFR_RNDN);
+       break;
++    default:
++      MPFR_ASSERTN (0);
+     }
+ }
+ 
+-/* same as mpfr_cmp, but returns 0 for both NaN's */
+-static int
+-mpfr_compare (mpfr_srcptr a, mpfr_srcptr b)
+-{
+-  return (MPFR_IS_NAN(a)) ? !MPFR_IS_NAN(b) :
+-    (MPFR_IS_NAN(b) || mpfr_cmp(a, b));
+-}
+-
+ static void
+ test3 (int (*testfunc)(mpfr_ptr, mpfr_srcptr, mpfr_srcptr, mpfr_rnd_t),
+        const char *foo, mpfr_prec_t prec, mpfr_rnd_t rnd)
+@@ -112,10 +106,10 @@
+ 
+   /* for each variable, consider each of the following 6 possibilities:
+      NaN, +Infinity, -Infinity, +0, -0 or a random number */
+-  for (i=0; i < SPECIAL_MAX*SPECIAL_MAX ; i++)
++  for (i = 0; i < SPECIAL_MAX * SPECIAL_MAX; i++)
+     {
+-      set_special (ref2, i%SPECIAL_MAX);
+-      set_special (ref3, i/SPECIAL_MAX);
++      set_special (ref2, i % SPECIAL_MAX);
++      set_special (ref3, i / SPECIAL_MAX);
+ 
+       /* reference call: foo(a, b, c) */
+       testfunc (ref1, ref2, ref3, rnd);
+@@ -124,11 +118,11 @@
+       mpfr_set (res1, ref2, rnd); /* exact operation */
+       testfunc (res1, res1, ref3, rnd);
+ 
+-      if (mpfr_compare (res1, ref1))
++      if (! SAME_VAL (res1, ref1))
+         {
+           printf ("Error for %s(a, a, c) with %s for ", foo,
+                   mpfr_print_rnd_mode (rnd));
+-          DISP("a=",ref2); DISP2(", c=",ref3);
++          DISP("a=", ref2); DISP2(", c=", ref3);
+           printf ("expected "); mpfr_dump (ref1);
+           printf ("got      "); mpfr_dump (res1);
+           exit (1);
+@@ -137,11 +131,12 @@
+       /* foo(a, b, a) */
+       mpfr_set (res1, ref3, rnd);
+       testfunc (res1, ref2, res1, rnd);
+-      if (mpfr_compare (res1, ref1))
++      if (! SAME_VAL (res1, ref1))
+         {
+           printf ("Error for %s(a, b, a) for ", foo);
+-          DISP("b=",ref2); DISP2(", a=", ref3);
+-          DISP("expected ", ref1); DISP2(", got ",res1);
++          DISP("b=", ref2); DISP2(", a=", ref3);
++          printf ("expected "); mpfr_dump (ref1);
++          printf ("got      "); mpfr_dump (res1);
+           exit (1);
+         }
+ 
+@@ -151,11 +146,12 @@
+       mpfr_set (res1, ref2, rnd);
+       testfunc (res1, res1, res1, rnd);
+ 
+-      if (mpfr_compare (res1, ref1))
++      if (! SAME_VAL (res1, ref1))
+         {
+           printf ("Error for %s(a, a, a) for ", foo);
+-          DISP2("a=",ref2);
+-          DISP("expected ", ref1); DISP2(", got ", res1);
++          DISP2("a=", ref2);
++          printf ("expected "); mpfr_dump (ref1);
++          printf ("got      "); mpfr_dump (res1);
+           exit (1);
+         }
+     }
+@@ -187,13 +183,13 @@
+   /* for each variable, consider each of the following 6 possibilities:
+      NaN, +Infinity, -Infinity, +0, -0 or a random number */
+ 
+-  for (i=0; i<SPECIAL_MAX; i++)
++  for (i = 0; i < SPECIAL_MAX; i++)
+     {
+       set_special (op1, i);
+-      for (j=0; j<SPECIAL_MAX; j++)
++      for (j = 0; j < SPECIAL_MAX; j++)
+         {
+           set_special (op2, j);
+-          for (k=0; k<SPECIAL_MAX; k++)
++          for (k = 0; k < SPECIAL_MAX; k++)
+             {
+               set_special (op3, k);
+ 
+@@ -204,11 +200,12 @@
+               mpfr_set (res, op1, rnd); /* exact operation */
+               testfunc (res, res, op2, op3, rnd);
+ 
+-              if (mpfr_compare (res, ref))
++              if (! SAME_VAL (res, ref))
+                 {
+                   printf ("Error for %s(a, a, b, c) for ", foo);
+                   DISP("a=", op1); DISP(", b=", op2); DISP2(", c=", op3);
+-                  DISP("expected ", ref); DISP2(", got ", res);
++                  printf ("expected "); mpfr_dump (ref);
++                  printf ("got      "); mpfr_dump (res);
+                   exit (1);
+                 }
+ 
+@@ -216,11 +213,12 @@
+               mpfr_set (res, op2, rnd);
+               testfunc (res, op1, res, op3, rnd);
+ 
+-              if (mpfr_compare (res, ref))
++              if (! SAME_VAL (res, ref))
+                 {
+                   printf ("Error for %s(a, a, b, c) for ", foo);
+                   DISP("a=", op1); DISP(", b=", op2); DISP2(", c=", op3);
+-                  DISP("expected ", ref); DISP2(", got ", res);
++                  printf ("expected "); mpfr_dump (ref);
++                  printf ("got      "); mpfr_dump (res);
+                   exit (1);
+                 }
+ 
+@@ -228,35 +226,38 @@
+               mpfr_set (res, op3, rnd);
+               testfunc (res, op1, op2, res, rnd);
+ 
+-              if (mpfr_compare (res, ref))
++              if (! SAME_VAL (res, ref))
+                 {
+                   printf ("Error for %s(a, a, b, c) for ", foo);
+                   DISP("a=", op1); DISP(", b=", op2); DISP2(", c=", op3);
+-                  DISP("expected ", ref); DISP2(", got ", res);
++                  printf ("expected "); mpfr_dump (ref);
++                  printf ("got      "); mpfr_dump (res);
+                   exit (1);
+                 }
+ 
+-              /* foo(a, a, a,c) */
++              /* foo(a, a, a, c) */
+               testfunc (ref, op1, op1, op3, rnd);
+               mpfr_set (res, op1, rnd);
+               testfunc (res, res, res, op3, rnd);
+-              if (mpfr_compare (res, ref))
++              if (! SAME_VAL (res, ref))
+                 {
+                   printf ("Error for %s(a, a, b, c) for ", foo);
+                   DISP("a=", op1); DISP(", a=", op2); DISP2(", c=", op3);
+-                  DISP("expected ", ref); DISP2(", got ", res);
++                  printf ("expected "); mpfr_dump (ref);
++                  printf ("got      "); mpfr_dump (res);
+                   exit (1);
+                 }
+ 
+-              /* foo(a, a, b,a) */
++              /* foo(a, a, b, a) */
+               testfunc (ref, op1, op2, op1, rnd);
+               mpfr_set (res, op1, rnd);
+               testfunc (res, res, op2, res, rnd);
+-              if (mpfr_compare (res, ref))
++              if (! SAME_VAL (res, ref))
+                 {
+                   printf ("Error for %s(a, a, b, c) for ", foo);
+                   DISP("a=", op1); DISP(", a=", op2); DISP2(", c=", op3);
+-                  DISP("expected ", ref); DISP2(", got ", res);
++                  printf ("expected "); mpfr_dump (ref);
++                  printf ("got      "); mpfr_dump (res);
+                   exit (1);
+                 }
+ 
+@@ -264,11 +265,12 @@
+               testfunc (ref, op1, op2, op2, rnd);
+               mpfr_set (res, op2, rnd);
+               testfunc (res, op1, res, res, rnd);
+-              if (mpfr_compare (res, ref))
++              if (! SAME_VAL (res, ref))
+                 {
+                   printf ("Error for %s(a, a, b, c) for ", foo);
+                   DISP("a=", op1); DISP(", a=", op2); DISP2(", c=", op3);
+-                  DISP("expected ", ref); DISP2(", got ", res);
++                  printf ("expected "); mpfr_dump (ref);
++                  printf ("got      "); mpfr_dump (res);
+                   exit (1);
+                 }
+ 
+@@ -276,11 +278,12 @@
+               testfunc (ref, op1, op1, op1, rnd);
+               mpfr_set (res, op1, rnd);
+               testfunc (res, res, res, res, rnd);
+-              if (mpfr_compare (res, ref))
++              if (! SAME_VAL (res, ref))
+                 {
+                   printf ("Error for %s(a, a, a, a) for ", foo);
+                   DISP2("a=", op1);
+-                  DISP("expected ", ref); DISP2(", got ", res);
++                  printf ("expected "); mpfr_dump (ref);
++                  printf ("got      "); mpfr_dump (res);
+                   exit (1);
+                 }
+             }
+@@ -313,10 +316,10 @@
+ 
+   /* ref2 can be NaN, +Inf, -Inf, +0, -0 or any number
+      ref3 can be 0 or any number */
+-  for (i=0; i<SPECIAL_MAX*2; i++)
++  for (i = 0; i < SPECIAL_MAX * 2; i++)
+     {
+-      set_special (ref2, i%SPECIAL_MAX);
+-      ref3 = i/SPECIAL_MAX == 0 ? 0 : randlimb ();
++      set_special (ref2, i % SPECIAL_MAX);
++      ref3 = i / SPECIAL_MAX == 0 ? 0 : randlimb ();
+ 
+       /* reference call: foo(a, b, c) */
+       testfunc (ref1, ref2, ref3, rnd);
+@@ -325,10 +328,10 @@
+       mpfr_set (res1, ref2, rnd); /* exact operation */
+       testfunc (res1, res1, ref3, rnd);
+ 
+-      if (mpfr_compare (res1, ref1))
++      if (! SAME_VAL (res1, ref1))
+         {
+           printf ("Error for %s(a, a, c) for c=%u\n", foo, ref3);
+-          DISP2("a=",ref2);
++          DISP2("a=", ref2);
+           printf ("expected "); mpfr_dump (ref1);
+           printf ("got      "); mpfr_dump (res1);
+           exit (1);
+@@ -356,10 +359,10 @@
+   mpfr_init2 (ref3, prec);
+   mpfr_init2 (res1, prec);
+ 
+-  for (i=0; i<SPECIAL_MAX*2; i++)
++  for (i = 0; i < SPECIAL_MAX * 2; i++)
+     {
+-      set_special (ref3, i%SPECIAL_MAX);
+-      ref2 = i/SPECIAL_MAX==0 ? 0 : randlimb ();
++      set_special (ref3, i % SPECIAL_MAX);
++      ref2 = i / SPECIAL_MAX == 0 ? 0 : randlimb ();
+ 
+       /* reference call: foo(a, b, c) */
+       testfunc (ref1, ref2, ref3, rnd);
+@@ -367,7 +370,7 @@
+       /* foo(a, b, a) */
+       mpfr_set (res1, ref3, rnd); /* exact operation */
+       testfunc (res1, ref2, res1, rnd);
+-      if (mpfr_compare (res1, ref1))
++      if (! SAME_VAL (res1, ref1))
+         {
+           printf ("Error for %s(a, b, a) for b=%u \n", foo, ref2);
+           DISP2("a=", ref3);
+@@ -397,7 +400,7 @@
+   mpfr_init2 (ref2, prec);
+   mpfr_init2 (res1, prec);
+ 
+-  for (i=0; i<SPECIAL_MAX; i++)
++  for (i = 0; i < SPECIAL_MAX; i++)
+     {
+       set_special (ref2, i);
+ 
+@@ -407,7 +410,7 @@
+       /* foo(a, a) */
+       mpfr_set (res1, ref2, rnd); /* exact operation */
+       testfunc (res1, res1, rnd);
+-      if (mpfr_compare (res1, ref1))
++      if (! SAME_VAL (res1, ref1))
+         {
+           printf ("Error for %s(a, a) for ", foo);
+           DISP2("a=", ref2);
+@@ -437,7 +440,7 @@
+   mpfr_init2 (ref2, prec);
+   mpfr_init2 (res1, prec);
+ 
+-  for (i=0; i<SPECIAL_MAX; i++)
++  for (i = 0; i < SPECIAL_MAX; i++)
+     {
+       set_special (ref2, i);
+ 
+@@ -447,10 +450,10 @@
+       /* foo(a, a) */
+       mpfr_set (res1, ref2, MPFR_RNDN); /* exact operation */
+       testfunc (res1, res1);
+-      if (mpfr_compare (res1, ref1))
++      if (! SAME_VAL (res1, ref1))
+         {
+           printf ("Error for %s(a, a) for ", foo);
+-          DISP2("a=",ref2);
++          DISP2("a=", ref2);
+           DISP("expected", ref1); DISP2(", got ", res1);
+           exit (1);
+         }
+@@ -479,7 +482,7 @@
+   mpfr_init2 (res1, prec);
+   mpfr_init2 (res2, prec);
+ 
+-  for (i=0; i<SPECIAL_MAX; i++)
++  for (i = 0; i < SPECIAL_MAX; i++)
+     {
+       set_special (ref3, i);
+ 
+@@ -489,12 +492,12 @@
+       /* foo(a, b, a) */
+       mpfr_set (res1, ref3, rnd); /* exact operation */
+       testfunc (res1, res2, res1, rnd);
+-      if (mpfr_compare (res1, ref1) || mpfr_compare (res2, ref2))
++      if (! SAME_VAL (res1, ref1) || ! SAME_VAL (res2, ref2))
+         {
+           printf ("Error for %s(a, b, a) for rnd=%s, ", foo,
+                   mpfr_print_rnd_mode (rnd));
+-          DISP2("a=",ref3);
+-          DISP("expected (", ref1); DISP(",",ref2);
++          DISP2("a=", ref3);
++          DISP("expected (", ref1); DISP(",", ref2);
+           DISP("), got (", res1); DISP(",", res2); printf(")\n");
+           exit (1);
+         }
+@@ -502,11 +505,11 @@
+       /* foo(a, b, b) */
+       mpfr_set (res2, ref3, rnd); /* exact operation */
+       testfunc (res1, res2, res2, rnd);
+-      if (mpfr_compare (res1, ref1) || mpfr_compare (res2, ref2))
++      if (! SAME_VAL (res1, ref1) || ! SAME_VAL (res2, ref2))
+         {
+           printf ("Error for %s(a, b, b) for ", foo);
+-          DISP2("b=",ref3);
+-          DISP("expected (", ref1); DISP(",",ref2);
++          DISP2("b=", ref3);
++          DISP("expected (", ref1); DISP(",", ref2);
+           DISP("), got (", res1); DISP(",", res2); printf(")\n");
+           exit (1);
+         }
+@@ -561,10 +564,10 @@
+       mpfr_set (res1, ref2, rnd); /* exact operation */
+       mpfr_pow (res1, res1, ref3, rnd);
+ 
+-      if (mpfr_compare (res1, ref1))
++      if (! SAME_VAL (res1, ref1))
+         {
+           printf ("Error for pow_int(a, a, c) for ");
+-          DISP("a=",ref2); DISP2(", c=",ref3);
++          DISP("a=", ref2); DISP2(", c=", ref3);
+           printf ("expected "); mpfr_dump (ref1);
+           printf ("got      "); mpfr_dump (res1);
+           exit (1);
+diff -Naurd mpfr-4.2.0-a/PATCHES mpfr-4.2.0-b/PATCHES
+--- mpfr-4.2.0-a/PATCHES	2023-05-12 15:08:39.233546717 +0000
++++ mpfr-4.2.0-b/PATCHES	2023-05-12 15:08:39.325546612 +0000
+@@ -0,0 +1 @@
++pow_general
+diff -Naurd mpfr-4.2.0-a/VERSION mpfr-4.2.0-b/VERSION
+--- mpfr-4.2.0-a/VERSION	2023-05-12 15:06:11.885721962 +0000
++++ mpfr-4.2.0-b/VERSION	2023-05-12 15:08:39.325546612 +0000
+@@ -1 +1 @@
+-4.2.0-p6
++4.2.0-p7
+diff -Naurd mpfr-4.2.0-a/src/mpfr.h mpfr-4.2.0-b/src/mpfr.h
+--- mpfr-4.2.0-a/src/mpfr.h	2023-05-12 15:06:11.877721972 +0000
++++ mpfr-4.2.0-b/src/mpfr.h	2023-05-12 15:08:39.321546616 +0000
+@@ -27,7 +27,7 @@
+ #define MPFR_VERSION_MAJOR 4
+ #define MPFR_VERSION_MINOR 2
+ #define MPFR_VERSION_PATCHLEVEL 0
+-#define MPFR_VERSION_STRING "4.2.0-p6"
++#define MPFR_VERSION_STRING "4.2.0-p7"
+ 
+ /* User macros:
+    MPFR_USE_FILE:        Define it to make MPFR define functions dealing
+diff -Naurd mpfr-4.2.0-a/src/pow.c mpfr-4.2.0-b/src/pow.c
+--- mpfr-4.2.0-a/src/pow.c	2023-01-05 17:09:48.000000000 +0000
++++ mpfr-4.2.0-b/src/pow.c	2023-05-12 15:08:39.309546630 +0000
+@@ -131,7 +131,6 @@
+   /* Declaration of the size variable */
+   mpfr_prec_t Nz = MPFR_PREC(z);               /* target precision */
+   mpfr_prec_t Nt;                              /* working precision */
+-  mpfr_exp_t err;                              /* error */
+   MPFR_ZIV_DECL (ziv_loop);
+ 
+   MPFR_LOG_FUNC
+@@ -171,12 +170,14 @@
+   MPFR_ZIV_INIT (ziv_loop, Nt);
+   for (;;)
+     {
++      mpfr_exp_t err, exp_t;
+       MPFR_BLOCK_DECL (flags1);
+ 
+       /* compute exp(y*ln|x|), using MPFR_RNDU to get an upper bound, so
+          that we can detect underflows. */
+       mpfr_log (t, absx, MPFR_IS_NEG (y) ? MPFR_RNDD : MPFR_RNDU); /* ln|x| */
+       mpfr_mul (t, y, t, MPFR_RNDU);                              /* y*ln|x| */
++      exp_t = MPFR_GET_EXP (t);
+       if (k_non_zero)
+         {
+           MPFR_LOG_MSG (("subtract k * ln(2)\n", 0));
+@@ -188,14 +189,16 @@
+           MPFR_LOG_VAR (t);
+         }
+       /* estimate of the error -- see pow function in algorithms.tex.
+-         The error on t is at most 1/2 + 3*2^(EXP(t)+1) ulps, which is
+-         <= 2^(EXP(t)+3) for EXP(t) >= -1, and <= 2 ulps for EXP(t) <= -2.
++         The error on t before the subtraction of k*log(2) is at most
++         1/2 + 3*2^(EXP(t)+1) ulps, which is <= 2^(EXP(t)+3) for EXP(t) >= -1,
++         and <= 2 ulps for EXP(t) <= -2.
+          Additional error if k_no_zero: treal = t * errk, with
+          1 - |k| * 2^(-Nt) <= exp(-|k| * 2^(-Nt)) <= errk <= 1,
+          i.e., additional absolute error <= 2^(EXP(k)+EXP(t)-Nt).
+-         Total error <= 2^err1 + 2^err2 <= 2^(max(err1,err2)+1). */
+-      err = MPFR_NOTZERO (t) && MPFR_GET_EXP (t) >= -1 ?
+-        MPFR_GET_EXP (t) + 3 : 1;
++         Total ulp error <= 2^err1 + 2^err2 <= 2^(max(err1,err2)+1),
++         where err1 = EXP(t)+3 for EXP(t) >= -1, and 1 otherwise,
++         and err2 = EXP(k). */
++      err = MPFR_NOTZERO (t) && exp_t >= -1 ? exp_t + 3 : 1;
+       if (k_non_zero)
+         {
+           if (MPFR_GET_EXP (k) > err)
+@@ -328,11 +331,17 @@
+        */
+       if (rnd_mode == MPFR_RNDN && inexact < 0 && lk < 0 &&
+           MPFR_GET_EXP (z) == __gmpfr_emin - 1 - lk && mpfr_powerof2_raw (z))
+-        /* Rounding to nearest, real result > z * 2^k = 2^(emin - 2),
+-         * underflow case: we will obtain the correct result and exceptions
+-         *  by replacing z by nextabove(z).
+-         */
+-        mpfr_nextabove (z);
++        /* Rounding to nearest, exact result > z * 2^k = 2^(emin - 2),
++         * and underflow case because the rounded result assuming an
++         * unbounded exponent range is 2^(emin - 2). We need to round
++         * to 2^(emin - 1), i.e. to round toward +inf.
++         * Note: the old code was using "mpfr_nextabove (z);" instead of
++         * setting rnd_mode to MPFR_RNDU for the call to mpfr_mul_2si, but
++         * this was incorrect in precision 1 because in this precision,
++         * mpfr_nextabove gave 2^(emin - 1), which is representable,
++         * so that mpfr_mul_2si did not generate the wanted underflow
++         * (the value was correct, but the underflow flag was missing). */
++        rnd_mode = MPFR_RNDU;
+       MPFR_CLEAR_FLAGS ();
+       inex2 = mpfr_mul_2si (z, z, lk, rnd_mode);
+       if (inex2)  /* underflow or overflow */
+diff -Naurd mpfr-4.2.0-a/src/version.c mpfr-4.2.0-b/src/version.c
+--- mpfr-4.2.0-a/src/version.c	2023-05-12 15:06:11.885721962 +0000
++++ mpfr-4.2.0-b/src/version.c	2023-05-12 15:08:39.325546612 +0000
+@@ -25,5 +25,5 @@
+ const char *
+ mpfr_get_version (void)
+ {
+-  return "4.2.0-p6";
++  return "4.2.0-p7";
+ }
+diff -Naurd mpfr-4.2.0-a/tests/texp10.c mpfr-4.2.0-b/tests/texp10.c
+--- mpfr-4.2.0-a/tests/texp10.c	2023-01-05 17:09:48.000000000 +0000
++++ mpfr-4.2.0-b/tests/texp10.c	2023-05-12 15:08:39.309546630 +0000
+@@ -190,6 +190,187 @@
+   mpfr_clear (y);
+ }
+ 
++/* Bug in mpfr_pow_general found by ofuf_thresholds (on 2023-02-13 for
++   a 32-bit exponent, changed on 2023-03-06 for a 64-bit exponent too),
++   fixed in commit b62966df913f73f08b3c5252e1d0c702bc20442f.
++   With a 32-bit exponent, failure for i=0.
++     expected 0.1111E1073741823
++     got      @Inf@
++     expected flags = inexact (8)
++     got flags      = overflow inexact (10)
++   With a 64-bit exponent, failure for i=1.
++     expected 0.11111111111111111111111E4611686018427387903
++     got      @Inf@
++     expected flags = inexact (8)
++     got flags      = overflow inexact (10)
++   Note: ofuf_thresholds was added to the master branch, but for the
++   time being, there are issues with these tests.
++*/
++static void
++bug20230213 (void)
++{
++  const char *s[2] = {
++    "0x1.34413504b3ccdbd5dd8p+28",
++    "0x1.34413509f79fef2c4e0dd14a7ae0ecfbacdbp+60"
++  };
++  mpfr_t x1, x2, y1, y2;
++  mpfr_prec_t px[2] = { 74, 147 };
++  mpfr_prec_t py[2] = { 4, 23 };
++  mpfr_exp_t old_emax, emax;
++  mpfr_flags_t flags1, flags2;
++  int i;
++
++  old_emax = mpfr_get_emax ();
++
++  for (i = 0; i < 2; i++)
++    {
++      if (i != 0)
++        set_emax (MPFR_EMAX_MAX);
++
++      emax = mpfr_get_emax ();
++
++      mpfr_inits2 (px[i], x1, x2, (mpfr_ptr) 0);
++      mpfr_inits2 (py[i], y1, y2, (mpfr_ptr) 0);
++
++      mpfr_setmax (y1, emax);
++      mpfr_log10 (x1, y1, MPFR_RNDD);
++      mpfr_set_str (x2, s[i], 0, MPFR_RNDN);
++      /* For i == 0, emax == 2^30, so that the value can be checked.
++         For i != 0, check the value for the case emax == 2^62.
++         The "0UL" ensures that the shifts are valid. */
++      if (i == 0 || (((0UL + MPFR_EMAX_MAX) >> 31) >> 30) == 1)
++        {
++          /* printf ("Checking x1 for i=%d\n", i); */
++          MPFR_ASSERTN (mpfr_equal_p (x1, x2));
++        }
++
++      /* Let MAXF be the maximum finite value (y1 above).
++         Since x1 < log10(MAXF), one should have exp10(x1) < MAXF, and
++         therefore, y2 = RU(exp10(x1)) <= RU(MAXF) = MAXF (no overflow). */
++      flags1 = MPFR_FLAGS_INEXACT;
++      mpfr_clear_flags ();
++      mpfr_exp10 (y2, x1, MPFR_RNDU);
++      flags2 = __gmpfr_flags;
++
++      if (! (mpfr_lessequal_p (y2, y1) && flags2 == flags1))
++        {
++          printf ("Error in bug20230213 for i=%d\n", i);
++          printf ("emax = %" MPFR_EXP_FSPEC "d\n", (mpfr_eexp_t) emax);
++          printf ("expected "); mpfr_dump (y1);
++          printf ("got      "); mpfr_dump (y2);
++          printf ("expected flags =");
++          flags_out (flags1);
++          printf ("got flags      =");
++          flags_out (flags2);
++          exit (1);
++        }
++
++      mpfr_clears (x1, x2, y1, y2, (mpfr_ptr) 0);
++    }
++
++  set_emax (old_emax);
++}
++
++/* Bug in mpfr_pow_general in precision 1 in the particular case of
++   rounding to nearest, z * 2^k = 2^(emin - 2) and real result larger
++   than this value; fixed in ff5012b61d5e5fee5156c57b8aa8fc1739c2a771
++   (which is simplified in 4f5de980be290687ac1409aa02873e9e0dd1a030);
++   initially found by ofuf_thresholds (though the test was incorrect).
++   With a 32-bit exponent, failure for i=0.
++   With a 64-bit exponent, failure for i=1.
++   The result was correct, but the underflow flag was missing.
++   Note: ofuf_thresholds was added to the master branch, but for the
++   time being, there are issues with these tests.
++*/
++static void
++bug20230427 (void)
++{
++  const char *s[2] = {
++    "-0.1001101000100000100110101000011E29",
++    "-0.100110100010000010011010100001001111101111001111111101111001101E61"
++  };
++  mpfr_t x, y, z, t1, t2;
++  mpfr_exp_t old_emin;
++  mpfr_flags_t flags, ex_flags;
++  int i, inex;
++
++  old_emin = mpfr_get_emin ();
++
++  mpfr_init2 (x, 63);
++  mpfr_inits2 (1, y, z, (mpfr_ptr) 0);
++  mpfr_inits2 (128, t1, t2, (mpfr_ptr) 0);
++
++  for (i = 0; i < 2; i++)
++    {
++      if (i == 0)
++        {
++          /* Basic check: the default emin should be -2^30 (exactly). */
++          if (mpfr_get_emin () != -1073741823)
++            abort ();
++        }
++      else
++        {
++          /* This test assumes that MPFR_EMIN_MIN = -2^62 (exactly).
++             The "0UL" ensures that the shifts are valid. */
++          if ((((0UL - MPFR_EMIN_MIN) >> 31) >> 30) != 1)
++            break;
++
++          set_emin (MPFR_EMIN_MIN);
++        }
++
++      mpfr_set_str_binary (x, s[i]);
++
++      /* We will test 10^x rounded to nearest in precision 1.
++         Check that 2^(emin - 2) < 10^x < (3/2) * 2^(emin - 2).
++         This is approximate, but by outputting the values, one can check
++         that one is not too close to the boundaries:
++           emin - 2              = -4611686018427387905
++           log2(10^x)           ~= -4611686018427387904.598
++           emin - 2 + log2(3/2) ~= -4611686018427387904.415
++         Thus the result should be the smallest positive number 2^(emin - 1)
++         because 10^x is closer to this number than to 0, the midpoint being
++         2^(emin - 2). And there should be an underflow in precision 1 because
++         the result rounded to nearest in an unbounded exponent range should
++         have been 2^(emin - 2), the midpoint being (3/2) * 2^(emin - 2).
++      */
++      mpfr_set_ui (t1, 10, MPFR_RNDN);
++      mpfr_log2 (t2, t1, MPFR_RNDN);
++      mpfr_mul (t1, t2, x, MPFR_RNDN);
++      inex = mpfr_set_exp_t (t2, mpfr_get_emin () - 2, MPFR_RNDN);
++      MPFR_ASSERTN (inex == 0);
++      MPFR_ASSERTN (mpfr_greater_p (t1, t2));  /* log2(10^x) > emin - 2 */
++      inex = mpfr_sub (t1, t1, t2, MPFR_RNDN);
++      MPFR_ASSERTN (inex == 0);
++      mpfr_set_ui (t2, 3, MPFR_RNDN);
++      mpfr_log2 (t2, t2, MPFR_RNDN);
++      mpfr_sub_ui (t2, t2, 1, MPFR_RNDN);  /* log2(3/2) */
++      MPFR_ASSERTN (mpfr_less_p (t1, t2));
++
++      mpfr_clear_flags ();
++      mpfr_exp10 (y, x, MPFR_RNDN);
++      flags = __gmpfr_flags;
++      ex_flags = MPFR_FLAGS_UNDERFLOW | MPFR_FLAGS_INEXACT;
++
++      mpfr_setmin (z, mpfr_get_emin ());  /* z = 0.1(a)emin */
++      if (! (mpfr_equal_p (y, z) && flags == ex_flags))
++        {
++          printf ("Error in bug20230427 for i=%d\n", i);
++          printf ("expected "); mpfr_dump (z);
++          printf ("got      "); mpfr_dump (y);
++          printf ("emin =       %" MPFR_EXP_FSPEC "d\n",
++                  (mpfr_eexp_t) mpfr_get_emin ());
++          printf ("expected flags =");
++          flags_out (ex_flags);
++          printf ("got flags      =");
++          flags_out (flags);
++          exit (1);
++        }
++    }
++
++  mpfr_clears (x, y, z, t1, t2, (mpfr_ptr) 0);
++  set_emin (old_emin);
++}
++
+ int
+ main (int argc, char *argv[])
+ {
+@@ -199,6 +380,9 @@
+ 
+   tests_start_mpfr ();
+ 
++  bug20230213 ();
++  bug20230427 ();
++
+   special_overflow ();
+   emax_m_eps ();
+   exp_range ();
+diff -Naurd mpfr-4.2.0-a/PATCHES mpfr-4.2.0-b/PATCHES
+--- mpfr-4.2.0-a/PATCHES	2023-05-17 17:17:28.512360351 +0000
++++ mpfr-4.2.0-b/PATCHES	2023-05-17 17:17:28.600360192 +0000
+@@ -0,0 +1 @@
++compound
+diff -Naurd mpfr-4.2.0-a/VERSION mpfr-4.2.0-b/VERSION
+--- mpfr-4.2.0-a/VERSION	2023-05-12 15:08:39.325546612 +0000
++++ mpfr-4.2.0-b/VERSION	2023-05-17 17:17:28.600360192 +0000
+@@ -1 +1 @@
+-4.2.0-p7
++4.2.0-p8
+diff -Naurd mpfr-4.2.0-a/src/compound.c mpfr-4.2.0-b/src/compound.c
+--- mpfr-4.2.0-a/src/compound.c	2023-01-05 17:09:48.000000000 +0000
++++ mpfr-4.2.0-b/src/compound.c	2023-05-17 17:17:28.588360213 +0000
+@@ -55,9 +55,9 @@
+ mpfr_compound_si (mpfr_ptr y, mpfr_srcptr x, long n, mpfr_rnd_t rnd_mode)
+ {
+   int inexact, compared, k, nloop;
+-  mpfr_t t;
+-  mpfr_exp_t e;
+-  mpfr_prec_t prec;
++  mpfr_t t, u;
++  mpfr_prec_t py, prec, extra;
++  mpfr_rnd_t rnd1;
+   MPFR_ZIV_DECL (loop);
+   MPFR_SAVE_EXPO_DECL (expo);
+ 
+@@ -136,64 +136,185 @@
+ 
+   MPFR_SAVE_EXPO_MARK (expo);
+ 
+-  prec = MPFR_PREC(y);
+-  prec += MPFR_INT_CEIL_LOG2 (prec) + 6;
++  py = MPFR_GET_PREC (y);
++  prec = py + MPFR_INT_CEIL_LOG2 (py) + 6;
+ 
+   mpfr_init2 (t, prec);
++  mpfr_init2 (u, prec);
+ 
+   k = MPFR_INT_CEIL_LOG2(SAFE_ABS (unsigned long, n));  /* thus |n| <= 2^k */
+ 
++  /* We compute u=log2p1(x) with prec+extra bits, since we lose some bits
++     in 2^u. */
++  extra = 0;
++  rnd1 = VSIGN (n) == MPFR_SIGN (x) ? MPFR_RNDD : MPFR_RNDU;
++
+   MPFR_ZIV_INIT (loop, prec);
+   for (nloop = 0; ; nloop++)
+     {
+-      /* we compute (1+x)^n as 2^(n*log2p1(x)) */
+-      inexact = mpfr_log2p1 (t, x, MPFR_RNDN) != 0;
+-      e = MPFR_GET_EXP(t);
+-      /* |t - log2(1+x)| <= 1/2*ulp(t) = 2^(e-prec-1) */
+-      inexact |= mpfr_mul_si (t, t, n, MPFR_RNDN) != 0;
+-      /* |t - n*log2(1+x)| <= 2^(e2-prec-1) + |n|*2^(e-prec-1)
+-                           <= 2^(e2-prec-1) + 2^(e+k-prec-1) <= 2^(e+k-prec)
+-                          where |n| <= 2^k, and e2 is the new exponent of t. */
+-      MPFR_ASSERTD(MPFR_GET_EXP(t) <= e + k);
+-      e += k;
+-      /* |t - n*log2(1+x)| <= 2^(e-prec) */
+-      /* detect overflow */
+-      if (nloop == 0 && mpfr_cmp_si (t, __gmpfr_emax) >= 0)
++      unsigned int inex;
++      mpfr_exp_t e, e2, ex;
++      mpfr_prec_t precu = MPFR_ADD_PREC (prec, extra);
++      mpfr_prec_t new_extra;
++      mpfr_rnd_t rnd2;
++
++      /* We compute (1+x)^n as 2^(n*log2p1(x)),
++         and we round toward 1, thus we round n*log2p1(x) toward 0,
++         thus for x*n > 0 we round log2p1(x) toward -Inf, and for x*n < 0
++         we round log2p1(x) toward +Inf. */
++      inex = mpfr_log2p1 (u, x, rnd1) != 0;
++      e = MPFR_GET_EXP (u);
++      /* |u - log2(1+x)| <= ulp(t) = 2^(e-precu) */
++      inex |= mpfr_mul_si (u, u, n, MPFR_RNDZ) != 0;
++      e2 = MPFR_GET_EXP (u);
++      /* |u - n*log2(1+x)| <= 2^(e2-precu) + |n|*2^(e-precu)
++                           <= 2^(e2-precu) + 2^(e+k-precu) <= 2^(e+k+1-precu)
++                          where |n| <= 2^k, and e2 is the new exponent of u. */
++      MPFR_ASSERTD (e2 <= e + k);
++      e += k + 1;
++      MPFR_ASSERTN (e2 <= MPFR_PREC_MAX);
++      new_extra = e2 > 0 ? e2 : 0;
++      /* |u - n*log2(1+x)| <= 2^(e-precu) */
++      /* detect overflow: since we rounded n*log2p1(x) toward 0,
++         if n*log2p1(x) >= __gmpfr_emax, we are sure there is overflow. */
++      if (mpfr_cmp_si (u, __gmpfr_emax) >= 0)
+         {
+           MPFR_ZIV_FREE (loop);
+           mpfr_clear (t);
++          mpfr_clear (u);
+           MPFR_SAVE_EXPO_FREE (expo);
+           return mpfr_overflow (y, rnd_mode, 1);
+         }
+-      /* detect underflow */
+-      if (nloop == 0 && mpfr_cmp_si (t, __gmpfr_emin - 1) <= 0)
++      /* detect underflow: similarly, since we rounded n*log2p1(x) toward 0,
++         if n*log2p1(x) < __gmpfr_emin-1, we are sure there is underflow. */
++      if (mpfr_cmp_si (u, __gmpfr_emin - 1) < 0)
+         {
+           MPFR_ZIV_FREE (loop);
+           mpfr_clear (t);
++          mpfr_clear (u);
+           MPFR_SAVE_EXPO_FREE (expo);
+           return mpfr_underflow (y,
+-                            (rnd_mode == MPFR_RNDN) ? MPFR_RNDZ : rnd_mode, 1);
++                            rnd_mode == MPFR_RNDN ? MPFR_RNDZ : rnd_mode, 1);
+         }
+       /* Detect cases where result is 1 or 1+ulp(1) or 1-1/2*ulp(1):
+-         |2^t - 1| = |exp(t*log(2)) - 1| <= |t|*log(2) < |t| */
+-      if (nloop == 0 && MPFR_GET_EXP(t) < - (mpfr_exp_t) MPFR_PREC(y))
++         |2^u - 1| = |exp(u*log(2)) - 1| <= |u|*log(2) < |u| */
++      if (nloop == 0 && MPFR_GET_EXP(u) < - py)
+         {
+-          /* since ulp(1) = 2^(1-PREC(y)), we have |t| < 1/4*ulp(1) */
++          /* since ulp(1) = 2^(1-py), we have |u| < 1/4*ulp(1) */
+           /* mpfr_compound_near_one must be called in the extended
+              exponent range, so that 1 is representable. */
+-          inexact = mpfr_compound_near_one (y, MPFR_SIGN (t), rnd_mode);
++          inexact = mpfr_compound_near_one (y, MPFR_SIGN (u), rnd_mode);
+           goto end;
+         }
+-      inexact |= mpfr_exp2 (t, t, MPFR_RNDA) != 0;
+-      /* |t - (1+x)^n| <= ulp(t) + |t|*log(2)*2^(e-prec)
+-                       < 2^(EXP(t)-prec) + 2^(EXP(t)+e-prec) */
+-      e = (e >= 0) ? e + 1 : 1;
++      /* FIXME: mpfr_exp2 could underflow to the smallest positive number
++         since MPFR_RNDA is used, and this case will not be detected by
++         MPFR_CAN_ROUND (see BUGS). Either fix that, or do early underflow
++         detection (which may be necessary). */
++      /* round 2^u toward 1 */
++      rnd2 = MPFR_IS_POS (u) ? MPFR_RNDD : MPFR_RNDU;
++      inex |= mpfr_exp2 (t, u, rnd2) != 0;
++      /* we had |u - n*log2(1+x)| < 2^(e-precu)
++         thus u = n*log2(1+x) + delta with |delta| < 2^(e-precu)
++         then 2^u = (1+x)^n * 2^delta with |delta| < 2^(e-precu).
++         For |delta| < 0.5, |2^delta - 1| <= |delta| thus
++         |t - (1+x)^n| <= ulp(t) + |t|*2^(e-precu)
++                       < 2^(EXP(t)-prec) + 2^(EXP(t)+e-precu) */
++      e = (precu - prec >= e) ? 1 : e + 1 - (precu - prec);
+       /* now |t - (1+x)^n| < 2^(EXP(t)+e-prec) */
+ 
+-      if (MPFR_LIKELY (inexact == 0 ||
+-                       MPFR_CAN_ROUND (t, prec - e, MPFR_PREC(y), rnd_mode)))
++      if (MPFR_LIKELY (!inex || MPFR_CAN_ROUND (t, prec - e, py, rnd_mode)))
+         break;
+ 
++      /* If t fits in the target precision (or with 1 more bit), then we can
++         round, assuming the working precision is large enough, but the above
++         MPFR_CAN_ROUND() will fail because we cannot determine the ternary
++         value. However since we rounded t toward 1, we can determine it.
++         Since the error in the approximation t is at most 2^e ulp(t),
++         this error should be less than 1/2 ulp(y), thus we should have
++         prec - py >= e + 1. */
++      if (mpfr_min_prec (t) <= py + 1 && prec - py >= e + 1)
++        {
++          /* we add/subtract one ulp to get the correct rounding */
++          if (rnd2 == MPFR_RNDD) /* t was rounded downwards */
++            mpfr_nextabove (t);
++          else
++            mpfr_nextbelow (t);
++          break;
++        }
++
++      /* Detect particular cases where Ziv's strategy may take too much
++         memory and be too long, i.e. when x^n fits in the target precision
++         (+ 1 additional bit for rounding to nearest) and the exact result
++         (1+x)^n is very close to x^n.
++         Necessarily, x is a large even integer and n > 0 (thus n > 1).
++         Since this does not depend on the working precision, we only
++         check this at the first iteration (nloop == 0).
++         Hence the first "if" below and the kx < ex test of the second "if"
++         (x is an even integer iff its least bit 1 has exponent >= 1).
++         The second test of the second "if" corresponds to another simple
++         condition that implies that x^n fits in the target precision.
++         Here are the details:
++         Let k be the minimum length of the significand of x, and x' the odd
++         (integer) significand of x. This means  that 2^(k-1) <= x' < 2^k.
++         Thus 2^(n*(k-1)) <= (x')^n < 2^(k*n), and x^n has between n*(k-1)+1
++         and k*n bits. So x^n can fit into p bits only if p >= n*(k-1)+1,
++         i.e. n*(k-1) <= p-1.
++         Note that x >= 2^k, so that x^n >= 2^(k*n). Since raw overflow
++         has already been detected, k*n cannot overflow if computed with
++         the mpfr_exp_t type. Hence the second test of the second "if",
++         which cannot overflow. */
++      MPFR_ASSERTD (n < 0 || n > 1);
++      if (nloop == 0 && n > 1 && (ex = MPFR_GET_EXP (x)) >= 17)
++        {
++          mpfr_prec_t kx = mpfr_min_prec (x);
++          mpfr_prec_t p = py + (rnd_mode == MPFR_RNDN);
++
++          MPFR_LOG_MSG (("Check if x^n fits... n=%ld kx=%Pd p=%Pd\n",
++                         n, kx, p));
++          if (kx < ex && n * (mpfr_exp_t) (kx - 1) <= p - 1)
++            {
++              mpfr_t v;
++
++              /* Check whether x^n really fits into p bits. */
++              mpfr_init2 (v, p);
++              inexact = mpfr_pow_ui (v, x, n, MPFR_RNDZ);
++              if (inexact == 0)
++                {
++                  MPFR_LOG_MSG (("x^n fits into p bits\n", 0));
++                  /* (x+1)^n = x^n * (1 + 1/x)^n
++                     For directed rounding, we can round when (1 + 1/x)^n
++                     < 1 + 2^-p, and then the result is x^n,
++                     except for rounding up. Indeed, if (1 + 1/x)^n < 1 + 2^-p,
++                     1 <= (x+1)^n < x^n * (1 + 2^-p) = x^n + x^n/2^p
++                     < x^n + ulp(x^n).
++                     For rounding to nearest, we can round when (1 + 1/x)^n
++                     < 1 + 2^-p, and then the result is x^n when x^n fits
++                     into p-1 bits, and nextabove(x^n) otherwise. */
++                  mpfr_ui_div (t, 1, x, MPFR_RNDU);
++                  mpfr_add_ui (t, t, 1, MPFR_RNDU);
++                  mpfr_pow_ui (t, t, n, MPFR_RNDU);
++                  mpfr_sub_ui (t, t, 1, MPFR_RNDU);
++                  /* t cannot be zero */
++                  if (MPFR_GET_EXP(t) < - py)
++                    {
++                      mpfr_set (y, v, MPFR_RNDZ);
++                      if ((rnd_mode == MPFR_RNDN && mpfr_min_prec (v) == p)
++                          || rnd_mode == MPFR_RNDU || rnd_mode == MPFR_RNDA)
++                        {
++                          /* round up */
++                          mpfr_nextabove (y);
++                          inexact = 1;
++                        }
++                      else
++                        inexact = -1;
++                      mpfr_clear (v);
++                      goto end;
++                    }
++                }
++              mpfr_clear (v);
++            }
++        }
++
+       /* Exact cases like compound(0.5,2) = 9/4 must be detected, since
+          except for 1+x power of 2, the log2p1 above will be inexact,
+          so that in the Ziv test, inexact != 0 and MPFR_CAN_ROUND will
+@@ -211,6 +332,8 @@
+ 
+       MPFR_ZIV_NEXT (loop, prec);
+       mpfr_set_prec (t, prec);
++      extra = new_extra;
++      mpfr_set_prec (u, MPFR_ADD_PREC (prec, extra));
+     }
+ 
+   inexact = mpfr_set (y, t, rnd_mode);
+@@ -218,6 +341,7 @@
+  end:
+   MPFR_ZIV_FREE (loop);
+   mpfr_clear (t);
++  mpfr_clear (u);
+ 
+   MPFR_SAVE_EXPO_FREE (expo);
+   return mpfr_check_range (y, inexact, rnd_mode);
+diff -Naurd mpfr-4.2.0-a/src/mpfr.h mpfr-4.2.0-b/src/mpfr.h
+--- mpfr-4.2.0-a/src/mpfr.h	2023-05-12 15:08:39.321546616 +0000
++++ mpfr-4.2.0-b/src/mpfr.h	2023-05-17 17:17:28.596360199 +0000
+@@ -27,7 +27,7 @@
+ #define MPFR_VERSION_MAJOR 4
+ #define MPFR_VERSION_MINOR 2
+ #define MPFR_VERSION_PATCHLEVEL 0
+-#define MPFR_VERSION_STRING "4.2.0-p7"
++#define MPFR_VERSION_STRING "4.2.0-p8"
+ 
+ /* User macros:
+    MPFR_USE_FILE:        Define it to make MPFR define functions dealing
+diff -Naurd mpfr-4.2.0-a/src/version.c mpfr-4.2.0-b/src/version.c
+--- mpfr-4.2.0-a/src/version.c	2023-05-12 15:08:39.325546612 +0000
++++ mpfr-4.2.0-b/src/version.c	2023-05-17 17:17:28.600360192 +0000
+@@ -25,5 +25,5 @@
+ const char *
+ mpfr_get_version (void)
+ {
+-  return "4.2.0-p7";
++  return "4.2.0-p8";
+ }
+diff -Naurd mpfr-4.2.0-a/tests/tcompound.c mpfr-4.2.0-b/tests/tcompound.c
+--- mpfr-4.2.0-a/tests/tcompound.c	2023-01-05 17:09:48.000000000 +0000
++++ mpfr-4.2.0-b/tests/tcompound.c	2023-05-17 17:17:28.588360213 +0000
+@@ -238,18 +238,263 @@
+   mpfr_clear (y);
+ }
+ 
+-static int
+-mpfr_compound2 (mpfr_ptr y, mpfr_srcptr x, mpfr_rnd_t rnd_mode)
++/* Failure with mpfr_compound_si from 2021-02-15 due to
++   incorrect underflow detection. */
++static void
++bug_20230206 (void)
+ {
+-  return mpfr_compound_si (y, x, 2, rnd_mode);
++  if (MPFR_PREC_MIN == 1)
++    {
++      mpfr_t x, y1, y2;
++      int inex1, inex2;
++      mpfr_flags_t flags1, flags2;
++#if MPFR_PREC_BITS >= 64
++      mpfr_exp_t emin;
++#endif
++
++      mpfr_inits2 (1, x, y1, y2, (mpfr_ptr) 0);
++      mpfr_set_ui_2exp (x, 1, -1, MPFR_RNDN);  /* x = 1/2 */
++
++      /* This first test is useful mainly for a 32-bit mpfr_exp_t type
++         (no failure with a 64-bit mpfr_exp_t type since the underflow
++         threshold in the extended exponent range is much lower). */
++
++      mpfr_set_ui_2exp (y1, 1, -1072124363, MPFR_RNDN);
++      inex1 = -1;
++      flags1 = MPFR_FLAGS_INEXACT;
++      mpfr_clear_flags ();
++      /* -1832808704 ~= -2^30 / log2(3/2) */
++      inex2 = mpfr_compound_si (y2, x, -1832808704, MPFR_RNDN);
++      flags2 = __gmpfr_flags;
++      if (!(mpfr_equal_p (y1, y2) &&
++            SAME_SIGN (inex1, inex2) &&
++            flags1 == flags2))
++        {
++          printf ("Error in bug_20230206 (1):\n");
++          printf ("Expected ");
++          mpfr_dump (y1);
++          printf ("  with inex = %d, flags =", inex1);
++          flags_out (flags1);
++          printf ("Got      ");
++          mpfr_dump (y2);
++          printf ("  with inex = %d, flags =", inex2);
++          flags_out (flags2);
++          exit (1);
++        }
++
++      /* This second test is for a 64-bit mpfr_exp_t type
++         (it is disabled with a 32-bit mpfr_exp_t type). */
++
++      /* The "#if" makes sure that 64-bit constants are supported, avoiding
++         a compilation failure. The "if" makes sure that the constant is
++         representable in a long (this would not be the case with 32-bit
++         unsigned long and 64-bit limb). It also ensures that mpfr_exp_t
++         has at least 64 bits. */
++#if MPFR_PREC_BITS >= 64
++      emin = mpfr_get_emin ();
++      set_emin (MPFR_EMIN_MIN);
++      mpfr_set_ui_2exp (y1, 1, -4611686018427366846, MPFR_RNDN);
++      inex1 = 1;
++      flags1 = MPFR_FLAGS_INEXACT;
++      mpfr_clear_flags ();
++      /* -7883729320669216768 ~= -2^62 / log2(3/2) */
++      inex2 = mpfr_compound_si (y2, x, -7883729320669216768, MPFR_RNDN);
++      flags2 = __gmpfr_flags;
++      if (!(mpfr_equal_p (y1, y2) &&
++            SAME_SIGN (inex1, inex2) &&
++            flags1 == flags2))
++        {
++          printf ("Error in bug_20230206 (2):\n");
++          printf ("Expected ");
++          mpfr_dump (y1);
++          printf ("  with inex = %d, flags =", inex1);
++          flags_out (flags1);
++          printf ("Got      ");
++          mpfr_dump (y2);
++          printf ("  with inex = %d, flags =", inex2);
++          flags_out (flags2);
++          exit (1);
++        }
++      set_emin (emin);
++#endif
++
++      mpfr_clears (x, y1, y2, (mpfr_ptr) 0);
++    }
+ }
+ 
++/* Reported by Patrick Pelissier on 2023-02-11 for the master branch
++   (tgeneric_ui.c with GMP_CHECK_RANDOMIZE=1412991715).
++   On a 32-bit host, one gets Inf (overflow) instead of 0.1E1071805703.
++*/
++static void
++bug_20230211 (void)
++{
++  mpfr_t x, y1, y2;
++  int inex1, inex2;
++  mpfr_flags_t flags1, flags2;
++
++  mpfr_inits2 (1, x, y1, y2, (mpfr_ptr) 0);
++  mpfr_set_ui_2exp (x, 1, -1, MPFR_RNDN);  /* x = 1/2 */
++  mpfr_set_ui_2exp (y1, 1, 1071805702, MPFR_RNDN);
++  inex1 = 1;
++  flags1 = MPFR_FLAGS_INEXACT;
++  mpfr_clear_flags ();
++  inex2 = mpfr_compound_si (y2, x, 1832263949, MPFR_RNDN);
++  flags2 = __gmpfr_flags;
++  if (!(mpfr_equal_p (y1, y2) &&
++        SAME_SIGN (inex1, inex2) &&
++        flags1 == flags2))
++    {
++      printf ("Error in bug_20230211:\n");
++      printf ("Expected ");
++      mpfr_dump (y1);
++      printf ("  with inex = %d, flags =", inex1);
++      flags_out (flags1);
++      printf ("Got      ");
++      mpfr_dump (y2);
++      printf ("  with inex = %d, flags =", inex2);
++      flags_out (flags2);
++      exit (1);
++    }
++  mpfr_clears (x, y1, y2, (mpfr_ptr) 0);
++}
++
++/* Integer overflow with compound.c d04caeae04c6a83276916c4fbac1fe9b0cec3c8b
++   (2023-02-23) or 952fb0f5cc2df1fffde3eb54c462fdae5f123ea6 in the 4.2 branch
++   on "n * (kx - 1) + 1". Note: if the only effect is just a random value,
++   this probably doesn't affect the result (one might enter the "if" while
++   one shouldn't, but the real check is done inside the "if"). This test
++   fails if -fsanitize=undefined -fno-sanitize-recover is used or if the
++   processor emits a signal in case of integer overflow.
++   This test has been made obsolete by the "kx < ex" condition
++   in 2cb3123891dd46fe0258d4aec7f8655b8ec69aaf (master branch)
++   or f5cb40571bc3d1559f05b230cf4ffecaf0952852 (4.2 branch). */
++static void
++bug_20230517 (void)
++{
++  mpfr_exp_t old_emax;
++  mpfr_t x;
++
++  old_emax = mpfr_get_emax ();
++  set_emax (MPFR_EMAX_MAX);
++
++  mpfr_init2 (x, 123456);
++  mpfr_set_ui (x, 65536, MPFR_RNDN);
++  mpfr_nextabove (x);
++  mpfr_compound_si (x, x, LONG_MAX >> 16, MPFR_RNDN);
++  mpfr_clear (x);
++
++  set_emax (old_emax);
++}
++
++/* Inverse function on non-special cases...
++   One has x = (1+y)^n with y > -1 and x > 0. Thus y = x^(1/n) - 1.
++   The inverse function is useful
++     - to build and check hard-to-round cases (see bad_cases() in tests.c);
++     - to test the behavior close to the overflow and underflow thresholds.
++   The case x = 0 actually needs to be handled as it may occur with
++   bad_cases() due to rounding.
++*/
+ static int
+-mpfr_compound3 (mpfr_ptr y, mpfr_srcptr x, mpfr_rnd_t rnd_mode)
++inv_compound (mpfr_ptr y, mpfr_srcptr x, long n, mpfr_rnd_t rnd_mode)
+ {
+-  return mpfr_compound_si (y, x, 3, rnd_mode);
++  mpfr_t t;
++  int inexact;
++  mpfr_prec_t precy, prect;
++  MPFR_ZIV_DECL (loop);
++  MPFR_SAVE_EXPO_DECL (expo);
++
++  MPFR_ASSERTN (n != 0);
++
++  if (MPFR_UNLIKELY (MPFR_IS_ZERO (x)))
++    {
++      if (n > 0)
++        return mpfr_set_si (y, -1, rnd_mode);
++      else
++        {
++          MPFR_SET_INF (y);
++          MPFR_SET_POS (y);
++          MPFR_RET (0);
++        }
++    }
++
++  MPFR_SAVE_EXPO_MARK (expo);
++
++  if (mpfr_equal_p (x, __gmpfr_one))
++    {
++      MPFR_SAVE_EXPO_FREE (expo);
++      mpfr_set_zero (y, 1);
++      MPFR_RET (0);
++    }
++
++  precy = MPFR_GET_PREC (y);
++  prect = precy + 20;
++  mpfr_init2 (t, prect);
++
++  MPFR_ZIV_INIT (loop, prect);
++  for (;;)
++    {
++      mpfr_exp_t expt1, expt2, err;
++      unsigned int inext;
++
++      if (mpfr_rootn_si (t, x, n, MPFR_RNDN) == 0)
++        {
++          /* With a huge t, this case would yield inext != 0 and a
++             MPFR_CAN_ROUND failure until a huge precision is reached
++             (as the result is very close to an exact point). Fortunately,
++             since t is exact, we can obtain the correctly rounded result
++             by doing the second operation to the target precision directly.
++          */
++          inexact = mpfr_sub_ui (y, t, 1, rnd_mode);
++          goto end;
++        }
++      expt1 = MPFR_GET_EXP (t);
++      /* |error| <= 2^(expt1-prect-1) */
++      inext = mpfr_sub_ui (t, t, 1, MPFR_RNDN);
++      if (MPFR_UNLIKELY (MPFR_IS_ZERO (t)))
++        goto cont;  /* cannot round yet */
++      expt2 = MPFR_GET_EXP (t);
++      err = 1;
++      if (expt2 < expt1)
++        err += expt1 - expt2;
++      /* |error(rootn)| <= 2^(err+expt2-prect-2)
++         and if mpfr_sub_ui is inexact:
++         |error| <= 2^(err+expt2-prect-2) + 2^(expt2-prect-1)
++                 <= (2^(err-1) + 1) * 2^(expt2-prect-1)
++                 <= 2^((err+1)+expt2-prect-2) */
++      if (inext)
++        err++;
++      /* |error| <= 2^(err+expt2-prect-2) */
++      if (MPFR_CAN_ROUND (t, prect + 2 - err, precy, rnd_mode))
++        break;
++
++    cont:
++      MPFR_ZIV_NEXT (loop, prect);
++      mpfr_set_prec (t, prect);
++    }
++
++  inexact = mpfr_set (y, t, rnd_mode);
++
++ end:
++  MPFR_ZIV_FREE (loop);
++  mpfr_clear (t);
++  MPFR_SAVE_EXPO_FREE (expo);
++  return mpfr_check_range (y, inexact, rnd_mode);
+ }
+ 
++#define DEFN(N)                                                         \
++  static int mpfr_compound##N (mpfr_ptr y, mpfr_srcptr x, mpfr_rnd_t r) \
++  { return mpfr_compound_si (y, x, N, r); }                             \
++  static int inv_compound##N (mpfr_ptr y, mpfr_srcptr x, mpfr_rnd_t r)  \
++  { return inv_compound (y, x, N, r); }
++
++DEFN(2)
++DEFN(3)
++DEFN(4)
++DEFN(5)
++DEFN(17)
++DEFN(120)
++
+ #define TEST_FUNCTION mpfr_compound2
+ #define test_generic test_generic_compound2
+ #include "tgeneric.c"
+@@ -258,17 +503,55 @@
+ #define test_generic test_generic_compound3
+ #include "tgeneric.c"
+ 
++#define TEST_FUNCTION mpfr_compound4
++#define test_generic test_generic_compound4
++#include "tgeneric.c"
++
++#define TEST_FUNCTION mpfr_compound5
++#define test_generic test_generic_compound5
++#include "tgeneric.c"
++
++#define TEST_FUNCTION mpfr_compound17
++#define test_generic test_generic_compound17
++#include "tgeneric.c"
++
++#define TEST_FUNCTION mpfr_compound120
++#define test_generic test_generic_compound120
++#include "tgeneric.c"
++
+ int
+ main (void)
+ {
+   tests_start_mpfr ();
+ 
+   check_ieee754 ();
++  bug_20230206 ();
++  bug_20230211 ();
++  bug_20230517 ();
+ 
+   test_generic_si (MPFR_PREC_MIN, 100, 100);
+ 
+   test_generic_compound2 (MPFR_PREC_MIN, 100, 100);
+   test_generic_compound3 (MPFR_PREC_MIN, 100, 100);
++  test_generic_compound4 (MPFR_PREC_MIN, 100, 100);
++  test_generic_compound5 (MPFR_PREC_MIN, 100, 100);
++  test_generic_compound17 (MPFR_PREC_MIN, 100, 100);
++  test_generic_compound120 (MPFR_PREC_MIN, 100, 100);
++
++  /* Note: For small n, we need a psup high enough to avoid too many
++     "f exact while f^(-1) inexact" occurrences in bad_cases(). */
++  bad_cases (mpfr_compound2, inv_compound2, "mpfr_compound2",
++             0, -256, 255, 4, 128, 240, 40);
++  bad_cases (mpfr_compound3, inv_compound3, "mpfr_compound3",
++             0, -256, 255, 4, 128, 120, 40);
++  bad_cases (mpfr_compound4, inv_compound4, "mpfr_compound4",
++             0, -256, 255, 4, 128, 80, 40);
++  bad_cases (mpfr_compound5, inv_compound5, "mpfr_compound5",
++             0, -256, 255, 4, 128, 80, 40);
++  bad_cases (mpfr_compound17, inv_compound17, "mpfr_compound17",
++             0, -256, 255, 4, 128, 80, 40);
++  bad_cases (mpfr_compound120, inv_compound120, "mpfr_compound120",
++             0, -256, 255, 4, 128, 80, 40);
+ 
+   tests_end_mpfr ();
+   return 0;
+diff -Naurd mpfr-4.2.0-a/tests/tests.c mpfr-4.2.0-b/tests/tests.c
+--- mpfr-4.2.0-a/tests/tests.c	2023-01-05 17:09:48.000000000 +0000
++++ mpfr-4.2.0-b/tests/tests.c	2023-05-17 17:17:28.588360213 +0000
+@@ -1086,10 +1086,9 @@
+                 }
+               if (inex_inv)
+                 {
+-                  printf ("bad_cases: f exact while f^(-1) inexact,\n"
+-                          "due to a poor choice of the parameters.\n");
+-                  exit (1);
+-                  /* alternatively, goto next_i */
++                  if (dbg)
++                    printf ("bad_cases: f exact while f^(-1) inexact\n");
++                  goto does_not_match;
+                 }
+               inex = 0;
+               break;
+@@ -1112,6 +1111,10 @@
+           if (mpfr_nanflag_p () || mpfr_overflow_p () || mpfr_underflow_p ()
+               || ! mpfr_equal_p (z, y))
+             {
++              /* This may occur when psup is not large enough: evaluating
++                 x = (f^(-1))(y) then z = f(x) may not give back y if the
++                 precision of x is too small. */
++            does_not_match:
+               if (dbg)
+                 {
+                   printf ("bad_cases: inverse doesn't match for %s\ny = ",
+diff -Naurd mpfr-4.2.0-a/PATCHES mpfr-4.2.0-b/PATCHES
+--- mpfr-4.2.0-a/PATCHES	2023-05-17 17:19:35.484201703 +0000
++++ mpfr-4.2.0-b/PATCHES	2023-05-17 17:19:35.596201603 +0000
+@@ -0,0 +1 @@
++printf_large_prec_for_g
+diff -Naurd mpfr-4.2.0-a/VERSION mpfr-4.2.0-b/VERSION
+--- mpfr-4.2.0-a/VERSION	2023-05-17 17:17:28.600360192 +0000
++++ mpfr-4.2.0-b/VERSION	2023-05-17 17:19:35.596201603 +0000
+@@ -1 +1 @@
+-4.2.0-p8
++4.2.0-p9
+diff -Naurd mpfr-4.2.0-a/src/mpfr.h mpfr-4.2.0-b/src/mpfr.h
+--- mpfr-4.2.0-a/src/mpfr.h	2023-05-17 17:17:28.596360199 +0000
++++ mpfr-4.2.0-b/src/mpfr.h	2023-05-17 17:19:35.592201606 +0000
+@@ -27,7 +27,7 @@
+ #define MPFR_VERSION_MAJOR 4
+ #define MPFR_VERSION_MINOR 2
+ #define MPFR_VERSION_PATCHLEVEL 0
+-#define MPFR_VERSION_STRING "4.2.0-p8"
++#define MPFR_VERSION_STRING "4.2.0-p9"
+ 
+ /* User macros:
+    MPFR_USE_FILE:        Define it to make MPFR define functions dealing
+diff -Naurd mpfr-4.2.0-a/src/vasprintf.c mpfr-4.2.0-b/src/vasprintf.c
+--- mpfr-4.2.0-a/src/vasprintf.c	2023-01-05 17:09:48.000000000 +0000
++++ mpfr-4.2.0-b/src/vasprintf.c	2023-05-17 17:19:35.576201620 +0000
+@@ -1888,7 +1888,7 @@
+              precision T-1.
+              where T is the threshold computed below and X is the exponent
+              that would be displayed with style 'e' and precision T-1. */
+-          int threshold;
++          mpfr_intmax_t threshold;
+           mpfr_exp_t x, e, k;
+           struct decimal_info dec_info;
+ 
+@@ -1920,9 +1920,15 @@
+           e = e <= 0 ? k : (e + 2) / 3 + (k <= 0 ? 0 : k);
+           MPFR_ASSERTD (e >= 1);
+ 
++          if (e > threshold)
++            e = threshold;
++
++          /* error if e does not fit in size_t (for mpfr_get_str) */
++          if (e > (size_t) -1)
++            goto error;
++
+           dec_info.str = mpfr_get_str (NULL, &dec_info.exp, 10,
+-                                       e < threshold ? e : threshold,
+-                                       p, spec.rnd_mode);
++                                       e, p, spec.rnd_mode);
+           register_string (np->sl, dec_info.str);
+           /* mpfr_get_str corresponds to a significand between 0.1 and 1,
+              whereas here we want a significand between 1 and 10. */
+diff -Naurd mpfr-4.2.0-a/src/version.c mpfr-4.2.0-b/src/version.c
+--- mpfr-4.2.0-a/src/version.c	2023-05-17 17:17:28.600360192 +0000
++++ mpfr-4.2.0-b/src/version.c	2023-05-17 17:19:35.592201606 +0000
+@@ -25,5 +25,5 @@
+ const char *
+ mpfr_get_version (void)
+ {
+-  return "4.2.0-p8";
++  return "4.2.0-p9";
+ }
+diff -Naurd mpfr-4.2.0-a/tests/tsprintf.c mpfr-4.2.0-b/tests/tsprintf.c
+--- mpfr-4.2.0-a/tests/tsprintf.c	2023-04-17 21:17:39.784645229 +0000
++++ mpfr-4.2.0-b/tests/tsprintf.c	2023-05-17 17:19:35.576201620 +0000
+@@ -1620,6 +1620,30 @@
+   mpfr_clear (x);
+ }
+ 
++/* On 2023-03-22, on a 64-bit Linux machine (thus with 32-bit int),
++   the case %.2147483648Rg yields an incorrect size computation and
++   MPFR wants to allocate 18446744071562070545 bytes. With assertion
++   checking (--enable-assert), one gets:
++     vasprintf.c:1908: MPFR assertion failed: threshold >= 1
++
++   This case should either succeed or fail as reaching an environmental limit
++   like with glibc (note that the precision does not fit in an int).
++*/
++static void
++large_prec_for_g (void)
++{
++  mpfr_t x;
++  int r;
++
++  mpfr_init2 (x, 128);
++  mpfr_set_ui (x, 1, MPFR_RNDN);
++  r = mpfr_snprintf (NULL, 0, "%.2147483647Rg\n", x);
++  MPFR_ASSERTN (r == 2);
++  r = mpfr_snprintf (NULL, 0, "%.2147483648Rg\n", x);
++  MPFR_ASSERTN (r == 2 || r < 0);
++  mpfr_clear (x);
++}
++
+ #if defined(HAVE_LOCALE_H) && defined(HAVE_SETLOCALE)
+ 
+ /* The following tests should be equivalent to those from test_locale()
+@@ -1793,6 +1817,7 @@
+   percent_n ();
+   mixed ();
+   check_length_overflow ();
++  large_prec_for_g ();
+   test_locale ();
+ 
+   if (getenv ("MPFR_CHECK_LIBC_PRINTF"))
diff --git a/src/patches/wavemon-0.9.4-force-netlink-include-path.patch b/src/patches/wavemon-0.9.4-force-netlink-include-path.patch
new file mode 100644
index 000000000..5004e567f
--- /dev/null
+++ b/src/patches/wavemon-0.9.4-force-netlink-include-path.patch
@@ -0,0 +1,11 @@
+--- wavemon-0.9.4/Makefile.in.orig	2021-09-18 02:25:37.000000000 +0200
++++ wavemon-0.9.4/Makefile.in	2023-05-19 23:45:50.170559365 +0200
+@@ -9,7 +9,7 @@
+ install-suid-root: exec_perms = 4755
+ 
+ CC	 ?= @CC@
+-CFLAGS	 ?= @CFLAGS@ @LIBNL3_CLI_CFLAGS@
++CFLAGS	 = @CFLAGS@ @LIBNL3_CLI_CFLAGS@
+ CPPFLAGS ?= @CPPFLAGS@
+ LDFLAGS  ?= @LDFLAGS@
+ DEFS	 ?= @DEFS@


hooks/post-receive
--
IPFire 2.x development tree

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2023-06-16  8:56 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-06-16  8:56 [git.ipfire.org] IPFire 2.x development tree branch, next, updated. a06f2fa02e66d247fc271ac639c64eabb8e9d514 Michael Tremer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox