commit:     fc29b9c0f71207121cbf9c93b1f5f131de30b078
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Tue Feb 27 00:58:05 2024 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Tue Feb 27 00:58:40 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=fc29b9c0

app-misc/gcal: fix crash with _F_S=3, add smoke test

* Fix crash with _F_S=3 using upstream patch
* Add smoke test to src_test which would've (and does) catch this

Closes: https://bugs.gentoo.org/925560
Signed-off-by: Sam James <sam <AT> gentoo.org>

 app-misc/gcal/files/gcal-4.1-fortify.patch | 21 ++++++++++
 app-misc/gcal/gcal-4.1-r2.ebuild           | 62 ++++++++++++++++++++++++++++++
 2 files changed, 83 insertions(+)

diff --git a/app-misc/gcal/files/gcal-4.1-fortify.patch 
b/app-misc/gcal/files/gcal-4.1-fortify.patch
new file mode 100644
index 000000000000..bc3b3a693af9
--- /dev/null
+++ b/app-misc/gcal/files/gcal-4.1-fortify.patch
@@ -0,0 +1,21 @@
+https://bugs.gentoo.org/925560
+https://git.savannah.gnu.org/cgit/gcal.git/commit/?id=a9d49b3e6535ebf2b5a0b4051e95bb5dc0c27fdb
+
+From a9d49b3e6535ebf2b5a0b4051e95bb5dc0c27fdb Mon Sep 17 00:00:00 2001
+From: Oleg Derevenetz <[email protected]>
+Date: Sun, 29 Nov 2020 17:42:07 +0100
+Subject: src/utils.c: fix segfault
+
+--- a/src/utils.c
++++ b/src/utils.c
+@@ -1354,7 +1354,7 @@ month_name (month)
+ 
+ 
+         len = (int) strlen (s) - 1;
+-        mayname = (char *) my_malloc (len,
++        mayname = (char *) my_malloc (len + 2,
+                                       ERR_NO_MEMORY_AVAILABLE,
+                                       __FILE__, ((long) __LINE__) - 2L,
+                                       "mayname", 0);
+-- 
+cgit v1.1

diff --git a/app-misc/gcal/gcal-4.1-r2.ebuild b/app-misc/gcal/gcal-4.1-r2.ebuild
new file mode 100644
index 000000000000..829867ea2dc9
--- /dev/null
+++ b/app-misc/gcal/gcal-4.1-r2.ebuild
@@ -0,0 +1,62 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit autotools flag-o-matic toolchain-funcs
+
+DESCRIPTION="The GNU Calendar - a replacement for cal"
+HOMEPAGE="https://www.gnu.org/software/gcal/";
+SRC_URI="mirror://gnu/gcal/${P}.tar.xz"
+
+LICENSE="GPL-3+"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~ppc ~x86 ~amd64-linux ~x86-linux ~ppc-macos"
+IUSE="ncurses nls unicode"
+
+RDEPEND="nls? ( virtual/libintl )
+       unicode? ( dev-libs/libunistring:= )"
+DEPEND="${RDEPEND}"
+BDEPEND="
+       app-arch/xz-utils
+       nls? ( >=sys-devel/gettext-0.17 )
+"
+
+DOCS=( BUGS LIMITATIONS NEWS README THANKS TODO )
+
+PATCHES=(
+       "${FILESDIR}/${P}-glibc228.patch"
+       "${FILESDIR}/${PN}-4.1-configure-clang16.patch"
+       "${FILESDIR}/${P}-fortify.patch"
+)
+
+src_prepare() {
+       default
+
+       # Drop once ${PN}-4.1-configure-clang16.patch merged
+       eautoreconf
+}
+
+src_configure() {
+       tc-export CC
+       append-cppflags -D_GNU_SOURCE
+
+       use unicode && append-libs -lunistring
+
+       econf \
+               --disable-rpath \
+               $(use_enable nls) \
+               $(use_enable ncurses term) \
+               $(use_enable unicode)
+}
+
+src_test() {
+       default
+
+       # Do basic smoke tests to help catch issues like bug #925560
+       # where trivial 'gcal' invocation crashed w/ _F_S=3.
+       local bin
+       for bin in gcal2txt tcal txt2gcal gcal ; do
+               src/${bin} || die
+       done
+}

Reply via email to