commit:     9f829fb9b30d3bd85375fe57279d835abd21869d
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Mon Oct 10 21:36:05 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Mon Oct 10 21:36:28 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9f829fb9

dev-libs/libical: backport parsing regression fix; backport F_S=3 fix

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

 .../files/libical-3.0.15-fortify-source-3.patch    |  43 ++++++++
 .../files/libical-3.0.15-revert-bad-fuzz-fix.patch |  36 +++++++
 dev-libs/libical/libical-3.0.15-r1.ebuild          | 119 +++++++++++++++++++++
 3 files changed, 198 insertions(+)

diff --git a/dev-libs/libical/files/libical-3.0.15-fortify-source-3.patch 
b/dev-libs/libical/files/libical-3.0.15-fortify-source-3.patch
new file mode 100644
index 000000000000..830d646b74d0
--- /dev/null
+++ b/dev-libs/libical/files/libical-3.0.15-fortify-source-3.patch
@@ -0,0 +1,43 @@
+https://github.com/libical/libical/commit/d67034b31cebe0db3ca65342813336b123921a15
+https://github.com/libical/libical/issues/603
+https://bugs.gentoo.org/876625
+
+From: Allen Winter <allen.win...@kdab.com>
+Date: Fri, 7 Oct 2022 09:43:32 -0400
+Subject: [PATCH] fix problem found with gcc fortify builds
+
+fixes: #603
+--- a/src/libical/icaltz-util.c
++++ b/src/libical/icaltz-util.c
+@@ -732,7 +732,7 @@ icalcomponent *icaltzutil_fetch_timezone(const char 
*location)
+     for (i = 0; i < num_trans; i++) {
+         int by_day = 0;
+         time_t start;
+-        enum icalrecurrencetype_weekday dow;
++        enum icalrecurrencetype_weekday dow = ICAL_NO_WEEKDAY;
+ 
+         prev_idx = idx;
+         idx = trans_idx[i];
+--- a/src/libicalss/icalbdbset.c
++++ b/src/libicalss/icalbdbset.c
+@@ -529,7 +529,7 @@ int icalbdbset_get_key(DBC *dbcp, DBT *key, DBT *data)
+ int icalbdbset_delete(DB *dbp, DBT *key)
+ {
+     DB_TXN *tid;
+-    int ret;
++    int ret = 0;
+     int done = 0;
+     int retry = 0;
+ 
+--- a/src/test/regression.c
++++ b/src/test/regression.c
+@@ -2322,7 +2322,7 @@ void test_fblist()
+         char *strp = out_str;
+ 
+         for (i = 0; foo[i] != -1; i++) {
+-            snprintf(strp, 79, "%1d", foo[i]);
++            snprintf(strp, 79-i, "%1d", foo[i]);
+             strp++;
+         }
+         str_is("Checking freebusy validity", out_str, "1121110");
+

diff --git a/dev-libs/libical/files/libical-3.0.15-revert-bad-fuzz-fix.patch 
b/dev-libs/libical/files/libical-3.0.15-revert-bad-fuzz-fix.patch
new file mode 100644
index 000000000000..e6f4d33ad286
--- /dev/null
+++ b/dev-libs/libical/files/libical-3.0.15-revert-bad-fuzz-fix.patch
@@ -0,0 +1,36 @@
+https://github.com/libical/libical/commit/eeccee80d0485bdd3951924b294a82e8bc39a5f8
+https://bugs.gentoo.org/876622
+
+From: Allen Winter <allen.win...@kdab.com>
+Date: Mon, 10 Oct 2022 14:58:29 -0400
+Subject: [PATCH] Revert "src/libical/icalparser.c - fix a fuzz issue for
+ integer overflow"
+
+This reverts commit ca3e2ad983771b90da259994b7a6d7de1fd1abdc.
+--- a/src/libical/icalparser.c
++++ b/src/libical/icalparser.c
+@@ -630,7 +630,6 @@ icalcomponent *icalparser_parse(icalparser *parser,
+                                 icalparser_line_gen_func line_gen_func)
+ {
+     char *line;
+-    unsigned int cnt = 0;
+     icalcomponent *c = 0;
+     icalcomponent *root = 0;
+     icalerrorstate es = icalerror_get_error_state(ICAL_MALFORMEDDATA_ERROR);
+@@ -641,7 +640,6 @@ icalcomponent *icalparser_parse(icalparser *parser,
+     icalerror_set_error_state(ICAL_MALFORMEDDATA_ERROR, ICAL_ERROR_NONFATAL);
+ 
+     do {
+-        cnt++;
+         line = icalparser_get_line(parser, line_gen_func);
+ 
+         if ((c = icalparser_add_line(parser, line)) != 0) {
+@@ -681,7 +679,7 @@ icalcomponent *icalparser_parse(icalparser *parser,
+             icalmemory_free_buffer(line);
+             cont = 1;
+         }
+-    } while (cont && cnt < TMP_BUF_SIZE);
++    } while (cont);
+ 
+     icalerror_set_error_state(ICAL_MALFORMEDDATA_ERROR, es);
+ 

diff --git a/dev-libs/libical/libical-3.0.15-r1.ebuild 
b/dev-libs/libical/libical-3.0.15-r1.ebuild
new file mode 100644
index 000000000000..f3c4f2d2e9b4
--- /dev/null
+++ b/dev-libs/libical/libical-3.0.15-r1.ebuild
@@ -0,0 +1,119 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{8..11} )
+VALA_USE_DEPEND="vapigen"
+inherit cmake python-any-r1 vala
+
+DESCRIPTION="Implementation of basic iCAL protocols"
+HOMEPAGE="https://github.com/libical/libical";
+SRC_URI="https://github.com/${PN}/${PN}/releases/download/v${PV}/${P}.tar.gz";
+
+LICENSE="|| ( MPL-2.0 LGPL-2.1 )"
+SLOT="0/3"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~riscv 
~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x86-solaris"
+IUSE="doc examples +glib +introspection static-libs test vala"
+
+REQUIRED_USE="introspection? ( glib ) vala? ( introspection )"
+
+RESTRICT="!test? ( test )"
+
+COMMON_DEPEND="
+       dev-libs/icu:=
+       glib? ( dev-libs/glib:2 )
+"
+DEPEND="${COMMON_DEPEND}
+       glib? ( dev-libs/libxml2:2 )
+"
+RDEPEND="${COMMON_DEPEND}
+       sys-libs/timezone-data
+"
+BDEPEND="
+       dev-lang/perl
+       virtual/pkgconfig
+       doc? (
+               app-doc/doxygen[dot]
+               glib? ( dev-util/gtk-doc )
+       )
+       introspection? ( dev-libs/gobject-introspection )
+       test? (
+               ${PYTHON_DEPS}
+               glib? ( $(python_gen_any_dep 
'dev-python/pygobject:3[${PYTHON_USEDEP}]') )
+       )
+       vala? ( $(vala_depend) )
+"
+
+DOCS=(
+       AUTHORS README.md ReleaseNotes.txt TEST THANKS TODO
+       doc/{AddingOrModifyingComponents.txt,UsingLibical.md}
+)
+
+PATCHES=(
+       "${FILESDIR}/${PN}-3.0.4-tests.patch"
+       "${FILESDIR}/${PN}-3.0.11-pkgconfig-libdir.patch"
+       "${FILESDIR}/${P}-fortify-source-3.patch"
+       "${FILESDIR}/${P}-revert-bad-fuzz-fix.patch"
+)
+
+python_check_deps() {
+       python_has_version "dev-python/pygobject:3[${PYTHON_USEDEP}]"
+}
+
+pkg_setup() {
+       use test && python-any-r1_pkg_setup
+}
+
+src_prepare() {
+       cmake_src_prepare
+
+       use examples || cmake_comment_add_subdirectory examples
+       use vala && vala_setup
+}
+
+src_configure() {
+       local mycmakeargs=(
+               -DCMAKE_DISABLE_FIND_PACKAGE_BerkeleyDB=ON
+               -DICAL_BUILD_DOCS=$(usex doc)
+               -DICAL_GLIB=$(usex glib)
+               -DGOBJECT_INTROSPECTION=$(usex introspection)
+               -DSHARED_ONLY=$(usex !static-libs)
+               -DLIBICAL_BUILD_TESTING=$(usex test)
+               -DICAL_GLIB_VAPI=$(usex vala)
+       )
+       if use vala; then
+               mycmakeargs+=(
+                       -DVALAC="${VALAC}"
+                       -DVAPIGEN="${VAPIGEN}"
+               )
+       fi
+       cmake_src_configure
+}
+
+src_compile() {
+       cmake_src_compile
+
+       if use doc; then
+               cmake_src_compile docs
+
+               HTML_DOCS=( "${BUILD_DIR}"/apidocs/html/. )
+       fi
+}
+
+src_test() {
+       local myctestargs=(
+               -E "(icalrecurtest|icalrecurtest-r)" # bug 660282
+       )
+
+       cmake_src_test
+}
+
+src_install() {
+       cmake_src_install
+
+       if use examples; then
+               rm examples/CMakeLists.txt || die
+               dodoc -r examples
+       fi
+}

Reply via email to