diff options
Diffstat (limited to 'dev-util/unifdef')
-rw-r--r-- | dev-util/unifdef/Manifest | 2 | ||||
-rw-r--r-- | dev-util/unifdef/files/unifdef-2.12-fortify.patch | 96 | ||||
-rw-r--r-- | dev-util/unifdef/unifdef-2.12-r2.ebuild | 28 |
3 files changed, 126 insertions, 0 deletions
diff --git a/dev-util/unifdef/Manifest b/dev-util/unifdef/Manifest index 7a3b06d9c754..aaef6bd2bb81 100644 --- a/dev-util/unifdef/Manifest +++ b/dev-util/unifdef/Manifest @@ -1,5 +1,7 @@ AUX unifdef-2.12-c23.patch 1822 BLAKE2B 9af6961cdded00053b6de12616c0a0ecbede675d8cb8c69dad8e392f83ad8cd0f175ca0e06ec113b8cd4194a829ba2a72254b1e2cfee1716fdccad722ee45b07 SHA512 688c10e6190e11ecd7db596cf906ef137dd2f00be478f784591e6553d5632c2690f607b9bcb1d598dbe6c965eecac7f716379033935dbc782696fc5322293871 +AUX unifdef-2.12-fortify.patch 13531 BLAKE2B fdd87b95feb58c9d88c9c610ee6bcb041e2d0547ee6b03fae9d461fbb9a82dca6960078435be5021ab4a45da3ca7a2a86d5b9668b1cab2b0f4052266fa5c2fc6 SHA512 dfe2eeca31d3136325fc48a826b38f976f01bec640e5abf18543976b7f2778f8a94829a1e064baff988095b1fdc713bed051a659a01f5d986abd08219e393bc1 AUX unifdef-2.12-tests.patch 677 BLAKE2B 67ea52814b0a993df4f639262332b462f62f38b257a28a97c2a0cc8cd115c41638cfec27ebe0ffab98e99787c8ee3700da33f4d5bed3fb8a3234a6741092a8b5 SHA512 ab8b6dbab6c4122a15551b881e715bd33dff9d500dfffee065851da983bc43331c2cdea56bee6a2b7b45f0b0847cf9c807430f497b1d83f5fb90e1dce83d09f5 DIST unifdef-2.12.tar.xz 66912 BLAKE2B c56069f92921f7a994c759d9cb1d271c1d8da0b5faf0acd84c2add13622e1240e4d3aea3fa4a9e082739cc1999bcacbf255dfeb0c5ec6a183e2a3e1bb599dbc4 SHA512 df78cf931989b5e604e68e0bf00490782d385a575b51584e4be44535b6bde5f9e2abff14510f8f426670d9f6f1abfb5768da5e108bdefd6c9d0c8356a05164b5 EBUILD unifdef-2.12-r1.ebuild 652 BLAKE2B 8c5e9995210b0681fc8be0e3b5a270d01724e16b78fef1d2553a8ff63f673ce6887af51c2dc19fc31e1c7a9a0d7024d0ee148a889e83a9aab170e8f48949ddb0 SHA512 09728079be68a1a11ae753d87571eb08561e063994c00a46bb6055aa44824c9510079425ff1efc3286562783a481810901c89aa20752fc65a4c06729ae22917c +EBUILD unifdef-2.12-r2.ebuild 693 BLAKE2B d20058ded516c269a812ed5930d1a1964afff8009e088556c12feac74465de3db7253d546390effdfb9e58f3c6acaf12c640556c20173a1eb5789357726d4fcf SHA512 97b8dd4a2d058143abc054d9de2ceab3ad29aa32c21f0ad6301e591136683fbefbb8d11c07981a4996b95c149bad886b9396b2ed8d6a8331a43061b2a05a2788 MISC metadata.xml 246 BLAKE2B e371bdda99f18de9d4959b40af5e1f7db0bff64ab41b6dbc969b7164ea72e37dc2ad2bfff677d36b0bc3611aa8c13f7a37eca8794af46f545e906b2397576d23 SHA512 1b64b2fd4bfcaa4429bb6c99bc4006dd4151ca8a054469acd90f2035144caba993498ec8954b100b698972c3006915072be35358bb3454de59cf2928b4d08a2e diff --git a/dev-util/unifdef/files/unifdef-2.12-fortify.patch b/dev-util/unifdef/files/unifdef-2.12-fortify.patch new file mode 100644 index 000000000000..1974aaae7e39 --- /dev/null +++ b/dev-util/unifdef/files/unifdef-2.12-fortify.patch @@ -0,0 +1,96 @@ +https://bugs.gentoo.org/836698 +https://gcc.gnu.org/PR120205 +https://github.com/fanf2/unifdef/pull/15 + +From 9791614057fe7fc72babd78708fdd07857fef9cf Mon Sep 17 00:00:00 2001 +From: Martin Liska <mliska@suse.cz> +Date: Wed, 10 Aug 2022 10:06:55 +0200 +Subject: [PATCH] Fix fgets(..., size=1) + +I noticed the following 2 tests are failing with -O1 +-D_FORTIFY_SOURCE=1: + +[ 44s] FAILED: whitespace-1.out: unifdef -DFOO whitespace.c +[ 44s] FAILED: whitespace-2.out: unifdef -DBAR whitespace.c + +It's caused by fact that: + +fgets returns '\0' if n == 1: + +char * +_IO_fgets (char *buf, int n, FILE *fp) +{ + size_t count; + char *result; + int old_error; + CHECK_FILE (fp, NULL); + if (n <= 0) + return NULL; + if (__glibc_unlikely (n == 1)) + { + /* Another irregular case: since we have to store a NUL byte and + there is only room for exactly one byte, we don't have to + read anything. */ + buf[0] = '\0'; + return buf; + } +--- + tests/whitespace-1.experr | 2 -- + tests/whitespace-1.expout | 5 +++++ + tests/whitespace-1.exprc | 2 +- + tests/whitespace-2.expout | 3 ++- + unifdef.c | 3 ++- + 5 files changed, 10 insertions(+), 5 deletions(-) + +diff --git a/tests/whitespace-1.experr b/tests/whitespace-1.experr +index cb23fce..e69de29 100644 +--- a/tests/whitespace-1.experr ++++ b/tests/whitespace-1.experr +@@ -1,2 +0,0 @@ +-unifdef: whitespace.c: 4: Obfuscated preprocessor control line (#if line 1 depth 1) +-unifdef: Output may be truncated +diff --git a/tests/whitespace-1.expout b/tests/whitespace-1.expout +index 257cc56..14dd150 100644 +--- a/tests/whitespace-1.expout ++++ b/tests/whitespace-1.expout +@@ -1 +1,6 @@ + foo ++ //spong ++ ++#ifdef BAR ++bar ++#endif +diff --git a/tests/whitespace-1.exprc b/tests/whitespace-1.exprc +index 0cfbf08..d00491f 100644 +--- a/tests/whitespace-1.exprc ++++ b/tests/whitespace-1.exprc +@@ -1 +1 @@ +-2 ++1 +diff --git a/tests/whitespace-2.expout b/tests/whitespace-2.expout +index 84cabfe..43f6399 100644 +--- a/tests/whitespace-2.expout ++++ b/tests/whitespace-2.expout +@@ -1,5 +1,6 @@ + #ifdef FOO + foo +-#endif //spong ++#endif ++ //spong + + bar +diff --git a/unifdef.c b/unifdef.c +index dc145a2..b7335aa 100644 +--- a/unifdef.c ++++ b/unifdef.c +@@ -846,7 +846,8 @@ parseline(void) + newline or if there is too much whitespace in a directive */ + if (linestate == LS_HASH) { + long len = cp - tline; +- if (fgets(tline + len, MAXLINE - len, input) == NULL) { ++ const char *line = fgets(tline + len, MAXLINE - len, input); ++ if (line == NULL || *line == '\0') { + if (ferror(input)) + err(2, "can't read %s", filename); + debug("parser insert newline at EOF", linenum); + diff --git a/dev-util/unifdef/unifdef-2.12-r2.ebuild b/dev-util/unifdef/unifdef-2.12-r2.ebuild new file mode 100644 index 000000000000..7a54bf93f918 --- /dev/null +++ b/dev-util/unifdef/unifdef-2.12-r2.ebuild @@ -0,0 +1,28 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit toolchain-funcs + +DESCRIPTION="remove #ifdef'ed lines from a file while otherwise leaving the file alone" +HOMEPAGE="https://dotat.at/prog/unifdef/" +SRC_URI="https://dotat.at/prog/unifdef/${P}.tar.xz" + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux" + +PATCHES=( + "${FILESDIR}"/${P}-tests.patch + "${FILESDIR}"/${P}-c23.patch + "${FILESDIR}"/${P}-fortify.patch +) + +DOCS=( README ) + +src_prepare() { + sed -i "/^prefix/s:=.*:=${EPREFIX}/usr:" Makefile || die + tc-export CC + default +} |