From f7aa2cebf2955ba498ee201db206eabb6491dbf3 Mon Sep 17 00:00:00 2001 From: Mikael Ejberg Pedersen <83463793+ejbergdk@users.noreply.github.com> Date: Sat, 5 Jun 2021 17:08:44 +0100 Subject: [PATCH] indent: Fix endless file read loop Indent 2.2.12 would end up in an endless loop if indenting a file with CR/LF line endings. --- mingw-w64-indent/PKGBUILD | 11 +++++--- .../indent-2.2.12-fix-file-read-loop.patch | 27 +++++++++++++++++++ 2 files changed, 34 insertions(+), 4 deletions(-) create mode 100644 mingw-w64-indent/indent-2.2.12-fix-file-read-loop.patch diff --git a/mingw-w64-indent/PKGBUILD b/mingw-w64-indent/PKGBUILD index 82e32b42b8..fd64200a2c 100644 --- a/mingw-w64-indent/PKGBUILD +++ b/mingw-w64-indent/PKGBUILD @@ -6,7 +6,7 @@ _realname=indent pkgbase=mingw-w64-${_realname} pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" pkgver=2.2.12 -pkgrel=2 +pkgrel=3 pkgdesc="C language source code formatting program (mingw-w64)" arch=('any') mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64') @@ -18,13 +18,15 @@ source=(https://ftp.gnu.org/gnu/indent/${_realname}-${pkgver}.tar.gz{,.sig} indent-2.2.11-segfault.patch indent-2.2.11-disable-documentation.patch indent-2.2.11-win32-wildexp-automake-support.patch - indent-2.2.12-disable-texinfo2man.patch) + indent-2.2.12-disable-texinfo2man.patch + indent-2.2.12-fix-file-read-loop.patch) sha256sums=('e77d68c0211515459b8812118d606812e300097cfac0b4e9fb3472664263bb8b' 'SKIP' '63c66b49831a90c5191cd3295d17a4e1888d8fa2a0b02589448de3b78d4e0293' '624ae1c52b01e52dfd4417bb160ef606342f25548fbd90c58ef4962367179750' 'd0ecfbc7cbf694b4222545bbd19d1b81f320ee9f5a2d5bfc86f27fe365f63145' - 'b8489a9dd7e4983f63ba6960bc3b1d8f51dd6ae08c29c6e8a9878491d0bf5e11') + 'b8489a9dd7e4983f63ba6960bc3b1d8f51dd6ae08c29c6e8a9878491d0bf5e11' + 'c96f9a9a80be3fc9d53ea44369865e8ddc10187cc875a0dffcfa423a25be679a') validpgpkeys=('782130B4C9944247977B82FD6EA4D2311A2D268D') # Helper macros to help make tasks easier # @@ -55,7 +57,8 @@ prepare() { indent-2.2.11-segfault.patch \ indent-2.2.11-disable-documentation.patch \ indent-2.2.11-win32-wildexp-automake-support.patch \ - indent-2.2.12-disable-texinfo2man.patch + indent-2.2.12-disable-texinfo2man.patch \ + indent-2.2.12-fix-file-read-loop.patch autoreconf -vfi } diff --git a/mingw-w64-indent/indent-2.2.12-fix-file-read-loop.patch b/mingw-w64-indent/indent-2.2.12-fix-file-read-loop.patch new file mode 100644 index 0000000000..ebfbb6a777 --- /dev/null +++ b/mingw-w64-indent/indent-2.2.12-fix-file-read-loop.patch @@ -0,0 +1,27 @@ +--- a/src/code_io.c ++++ b/src/code_io.c +@@ -203,9 +203,9 @@ extern file_buffer_ty * read_file( + * bytes in a 16-bit world... + */ + +- unsigned int size = 0, size_to_read = 0; ++ unsigned int size = 0, size_to_read = 0, size_sum = 0; + #else +- ssize_t size = 0; ++ ssize_t size = 0, size_sum = 0; + size_t size_to_read = 0; + #endif + +@@ -284,8 +284,12 @@ extern file_buffer_ty * read_file( + xfree(fileptr.data); + fatal (_("Error reading input file %s"), filename); + } ++ if (size == 0) ++ break; + size_to_read -= size; ++ size_sum += size; + } ++ size = size_sum; + + if (close(fd) < 0) + {