mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-24 04:59:14 -07:00
dev-libs/confuse: EAPI=8, add some good upstream fixes
Signed-off-by: Arthur Zamarin <arthurzam@gentoo.org>
This commit is contained in:
63
dev-libs/confuse/confuse-3.3-r3.ebuild
Normal file
63
dev-libs/confuse/confuse-3.3-r3.ebuild
Normal file
@@ -0,0 +1,63 @@
|
||||
# Copyright 1999-2025 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
inherit multilib-minimal
|
||||
|
||||
DESCRIPTION="a configuration file parser library"
|
||||
HOMEPAGE="https://github.com/libconfuse/libconfuse"
|
||||
SRC_URI="https://github.com/libconfuse/libconfuse/releases/download/v${PV}/${P}.tar.xz"
|
||||
|
||||
LICENSE="ISC"
|
||||
SLOT="0/2.1.0"
|
||||
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~sparc x86 ~amd64-linux ~x86-linux ~ppc-macos"
|
||||
|
||||
IUSE="nls static-libs"
|
||||
|
||||
BDEPEND="
|
||||
app-alternatives/lex
|
||||
dev-build/libtool
|
||||
virtual/pkgconfig
|
||||
nls? ( sys-devel/gettext )
|
||||
"
|
||||
RDEPEND="
|
||||
nls? ( virtual/libintl[${MULTILIB_USEDEP}] )
|
||||
"
|
||||
|
||||
PATCHES=(
|
||||
# Upstream commit to fix CVE-2022-40320:
|
||||
# https://github.com/libconfuse/libconfuse/commit/d73777c2c3566fb2647727bb56d9a2295b81669b
|
||||
"${FILESDIR}"/confuse-3.3-fix-CVE-2022-40320.patch
|
||||
# https://github.com/libconfuse/libconfuse/pull/167
|
||||
"${FILESDIR}"/confuse-3.3-lfs.patch
|
||||
# https://github.com/libconfuse/libconfuse/pull/181
|
||||
"${FILESDIR}"/confuse-3.3-isspace.patch
|
||||
)
|
||||
|
||||
DOCS=( AUTHORS )
|
||||
|
||||
src_prepare() {
|
||||
default
|
||||
multilib_copy_sources
|
||||
}
|
||||
|
||||
multilib_src_configure() {
|
||||
# examples are normally compiled but not installed. They
|
||||
# fail during a mingw crosscompile.
|
||||
local ECONF_SOURCE=${BUILD_DIR}
|
||||
econf \
|
||||
--disable-examples \
|
||||
$(use_enable nls) \
|
||||
$(use_enable static-libs static)
|
||||
}
|
||||
|
||||
multilib_src_install_all() {
|
||||
doman doc/man/man3/*.3
|
||||
dodoc -r doc/html
|
||||
|
||||
docinto examples
|
||||
dodoc examples/*.{c,conf}
|
||||
|
||||
find "${D}" -name '*.la' -type f -delete || die
|
||||
}
|
||||
38
dev-libs/confuse/files/confuse-3.3-isspace.patch
Normal file
38
dev-libs/confuse/files/confuse-3.3-isspace.patch
Normal file
@@ -0,0 +1,38 @@
|
||||
https://github.com/libconfuse/libconfuse/commit/dc7cef956d6d7c1ec792f9561f732797b52e92d4
|
||||
From: Thomas Klausner <wiz@gatalith.at>
|
||||
Date: Mon, 5 May 2025 23:22:51 +0200
|
||||
Subject: [PATCH] Fix isspace() arguments.
|
||||
|
||||
Per ANSI and POSIX, isspace() only accepts arguments that
|
||||
are valid 'unsigned char' or EOF.
|
||||
|
||||
The code passed 'char' arguments, which on many platforms are
|
||||
'signed char'. These are automatically promoted to integers, keeping
|
||||
the sign, so negative values like -61 are passed to isspace(),
|
||||
which is not allowed per the standards.
|
||||
|
||||
Casting to 'unsigned char' makes sure the isspace argument is in the
|
||||
allowed range.
|
||||
|
||||
Fixes core dump e.g. in i3status.
|
||||
|
||||
Closes #180.
|
||||
--- a/src/lexer.l
|
||||
+++ b/src/lexer.l
|
||||
@@ -397,14 +397,14 @@ static char *trim_whitespace(char *str, unsigned int len)
|
||||
return str;
|
||||
|
||||
while (len > 1) {
|
||||
- if ((str[len] == 0 || isspace(str[len])) && isspace(str[len - 1]))
|
||||
+ if ((str[len] == 0 || isspace((unsigned char)str[len])) && isspace((unsigned char)str[len - 1]))
|
||||
len--;
|
||||
else
|
||||
break;
|
||||
}
|
||||
str[len] = 0;
|
||||
|
||||
- while (isspace(*str))
|
||||
+ while (isspace((unsigned char)*str))
|
||||
str++;
|
||||
|
||||
return str;
|
||||
31
dev-libs/confuse/files/confuse-3.3-lfs.patch
Normal file
31
dev-libs/confuse/files/confuse-3.3-lfs.patch
Normal file
@@ -0,0 +1,31 @@
|
||||
https://github.com/libconfuse/libconfuse/commit/e967a307bf570306acd949513559e044b0da1f2d
|
||||
From: Mike Frysinger <vapier@chromium.org>
|
||||
Date: Tue, 10 Jan 2023 14:03:09 -0500
|
||||
Subject: [PATCH] configure.ac: enable automatic LFS support
|
||||
|
||||
Automatically enable large filesystem support so we use the newer
|
||||
interfaces when interacting with the filesystem. Without this,
|
||||
code that tries to stat a file with 64-bit inodes can fail if the
|
||||
stat structure is only 32-bit (which is common on x86 & arm). On
|
||||
Linux, this can manifest with some filesystems more often than
|
||||
others.
|
||||
|
||||
Practically speaking, since libconfuse doesn't do too much file
|
||||
I/O, the overhead should be non-existent. Especially since the
|
||||
C library (e.g. glibc) is already using the 64-bit syscall even
|
||||
if the function call was 32-bit.
|
||||
|
||||
On systems that have 64-bit stat already (which is common on x86_64
|
||||
and aarch64), there is no overhead as the code is exactly the same.
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -31,6 +31,9 @@ AM_GNU_GETTEXT([external])
|
||||
AM_GNU_GETTEXT_VERSION([0.19.6])
|
||||
AM_GNU_GETTEXT_REQUIRE_VERSION([0.19.6])
|
||||
|
||||
+# Checks for OS settings.
|
||||
+AC_SYS_LARGEFILE
|
||||
+
|
||||
# Checks for header files.
|
||||
AC_HEADER_STDC
|
||||
AC_CHECK_HEADERS([unistd.h string.h strings.h sys/stat.h windows.h])
|
||||
Reference in New Issue
Block a user