commit:     ef52b34d6d49b9b4d41d19dd6df290da5b7179eb
Author:     Eli Schwartz <eschwartz93 <AT> gmail <DOT> com>
AuthorDate: Mon May 20 02:02:09 2024 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Mon May 20 21:56:54 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ef52b34d

dev-vcs/cvs: fix all kinds of Modern C issues

This package release is an extra-vintage 2005 with extra gnulib on top.

Among numerous other issues, the broken autoconf standard macros managed
to break the STDC_HEADERS check, resulting in cvs thinking that there
are no available standard headers, and not bothering to include them.
Ouch!

To fix this, we:
- fix a broken AM_GNU_GETTEXT_VERSION macro to stop autopoint erroring
- rerun eautoreconf, to fix various standard macros with c99 fixes
- add some m4 patches that partially backport gnulib fixes (I think hope
  and pray, since I stopped looking at them after a bit due to the
  inability to backport)

Also, while we are at it, throw in a broken shell quoting fix.

Closes: https://bugs.gentoo.org/898782
Closes: https://bugs.gentoo.org/882225
Closes: https://bugs.gentoo.org/870835
Signed-off-by: Eli Schwartz <eschwartz93 <AT> gmail.com>
Signed-off-by: Sam James <sam <AT> gentoo.org>

 dev-vcs/cvs/cvs-1.12.12-r15.ebuild                 | 109 ++++++++++++++++++
 ...uoting-around-potentially-empty-shell-var.patch |  30 +++++
 dev-vcs/cvs/files/0001-gettext-autoreconf.patch    |  25 +++++
 dev-vcs/cvs/files/c99-roundup.patch                | 122 +++++++++++++++++++++
 4 files changed, 286 insertions(+)

diff --git a/dev-vcs/cvs/cvs-1.12.12-r15.ebuild 
b/dev-vcs/cvs/cvs-1.12.12-r15.ebuild
new file mode 100644
index 000000000000..9c2f93c9e910
--- /dev/null
+++ b/dev-vcs/cvs/cvs-1.12.12-r15.ebuild
@@ -0,0 +1,109 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit autotools pam toolchain-funcs
+
+DESCRIPTION="Concurrent Versions System - source code revision control tools"
+HOMEPAGE="https://cvs.nongnu.org/";
+
+SRC_URI="mirror://gnu/non-gnu/cvs/source/feature/${PV}/${P}.tar.bz2
+       doc? ( 
mirror://gnu/non-gnu/cvs/source/feature/${PV}/cederqvist-${PV}.html.tar.bz2
+               
mirror://gnu/non-gnu/cvs/source/feature/${PV}/cederqvist-${PV}.pdf
+               
mirror://gnu/non-gnu/cvs/source/feature/${PV}/cederqvist-${PV}.ps )"
+
+LICENSE="GPL-2 LGPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 
~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-solaris"
+
+IUSE="crypt doc kerberos nls pam selinux server"
+RESTRICT="test"
+
+DEPEND="
+       >=sys-libs/zlib-1.1.4
+       kerberos? ( virtual/krb5 )
+       pam? ( sys-libs/pam )
+       server? ( virtual/libcrypt:= )
+"
+RDEPEND="
+       ${DEPEND}
+       selinux? ( sec-policy/selinux-cvs )
+"
+
+src_unpack() {
+       unpack ${P}.tar.bz2
+       use doc && unpack cederqvist-${PV}.html.tar.bz2
+}
+
+PATCHES=(
+       "${FILESDIR}"/${P}-cvsbug-tmpfix.patch
+       "${FILESDIR}"/${P}-openat.patch
+       "${FILESDIR}"/${P}-block-requests.patch
+       "${FILESDIR}"/${P}-cvs-gnulib-vasnprintf.patch
+       "${FILESDIR}"/${P}-install-sh.patch
+       "${FILESDIR}"/${P}-hash-nameclash.patch # for AIX
+       "${FILESDIR}"/${P}-getdelim.patch # 314791
+       "${FILESDIR}"/${PN}-1.12.12-rcs2log-coreutils.patch # 144114
+       "${FILESDIR}"/${P}-mktime-x32.patch # 395641
+       "${FILESDIR}"/${P}-fix-massive-leak.patch
+       "${FILESDIR}"/${P}-mktime-configure-m4.patch #220040 #570208
+       "${FILESDIR}"/${P}-CVE-2012-0804.patch
+       "${FILESDIR}"/${P}-format-security.patch
+       "${FILESDIR}"/${P}-musl.patch
+       "${FILESDIR}"/${P}-CVE-2017-12836-commandinjection.patch
+       "${FILESDIR}"/0001-gettext-autoreconf.patch
+       "${FILESDIR}"/0001-fix-quoting-around-potentially-empty-shell-var.patch
+       "${FILESDIR}"/c99-roundup.patch
+       )
+DOCS=( BUGS ChangeLog{,.zoo} DEVEL-CVS FAQ HACKING MINOR-BUGS NEWS \
+       PROJECTS README TESTS TODO )
+
+src_prepare() {
+       export CONFIG_SHELL=${BASH}  # configure fails without
+       default
+       eautoreconf
+       sed -i "/^AR/s:ar:$(tc-getAR):" diff/Makefile.in lib/Makefile.in || die
+}
+
+src_configure() {
+       if tc-is-cross-compiler ; then
+               # Sane defaults when cross-compiling (as these tests want to
+               # try and execute code).
+               export cvs_cv_func_printf_ptr="yes"
+       fi
+       econf \
+               --with-external-zlib \
+               --with-tmpdir="${EPREFIX}"/tmp \
+               $(use_enable crypt encryption) \
+               $(use_with kerberos gssapi) \
+               $(use_enable nls) \
+               $(use_enable pam) \
+               $(use_enable server)
+}
+
+src_install() {
+       # Not installed into emacs site-lisp because it clobbers the normal C
+       # indentations.
+       DOCS+=( cvs-format.el )
+
+       if use doc; then
+               DOCS+=( "${DISTDIR}"/cederqvist-${PV}.{pdf,ps} )
+               HTML_DOCS=( ../cederqvist-${PV}.html/. )
+       fi
+
+       default
+
+       use doc && dosym cvs.html /usr/share/doc/${PF}/html/index.html
+
+       if use server; then
+               newdoc "${FILESDIR}"/cvs-1.12.12-cvs-custom.c cvs-custom.c
+               insinto /etc/xinetd.d
+               newins "${FILESDIR}"/cvspserver.xinetd.d cvspserver
+               newenvd "${FILESDIR}"/01-cvs-env.d 01cvs
+       fi
+
+       if use pam; then
+               newpamd "${FILESDIR}"/cvs.pam-include-1.12.12 cvs
+       fi
+}

diff --git 
a/dev-vcs/cvs/files/0001-fix-quoting-around-potentially-empty-shell-var.patch 
b/dev-vcs/cvs/files/0001-fix-quoting-around-potentially-empty-shell-var.patch
new file mode 100644
index 000000000000..74041583e835
--- /dev/null
+++ 
b/dev-vcs/cvs/files/0001-fix-quoting-around-potentially-empty-shell-var.patch
@@ -0,0 +1,30 @@
+From 6054eb157a25b4b46427baa6eb53b5e18135019a Mon Sep 17 00:00:00 2001
+From: Eli Schwartz <[email protected]>
+Date: Sun, 19 May 2024 21:15:34 -0400
+Subject: [PATCH 1/2] fix quoting around potentially empty shell var
+
+required to handle POSIX `test` command
+
+ * QA Notice: Broken syntax in configure script
+ *
+ *     ./configure: line 8046: test: =: unary operator expected
+---
+ configure.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.in b/configure.in
+index d4f3a44..2a9b0ff 100644
+--- a/configure.in
++++ b/configure.in
+@@ -179,7 +179,7 @@ AC_CHECK_MEMBERS([struct stat.st_blksize])
+ AC_CHECK_MEMBERS([struct stat.st_rdev])
+ 
+ AC_FUNC_FSEEKO
+-if test $ac_cv_func_fseeko = no; then
++if test "$ac_cv_func_fseeko" = no; then
+     AC_LIBOBJ(fseeko)
+     AC_LIBOBJ(ftello)
+ fi
+-- 
+2.44.1
+

diff --git a/dev-vcs/cvs/files/0001-gettext-autoreconf.patch 
b/dev-vcs/cvs/files/0001-gettext-autoreconf.patch
new file mode 100644
index 000000000000..b091fb6b4175
--- /dev/null
+++ b/dev-vcs/cvs/files/0001-gettext-autoreconf.patch
@@ -0,0 +1,25 @@
+From dafaeefa2d81034333ec73594b8209caebb69b23 Mon Sep 17 00:00:00 2001
+From: Eli Schwartz <[email protected]>
+Date: Sun, 19 May 2024 19:48:33 -0400
+Subject: [PATCH] gettext autoreconf
+
+---
+ configure.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.in b/configure.in
+index ada8454..d4f3a44 100644
+--- a/configure.in
++++ b/configure.in
+@@ -206,7 +206,7 @@ gl_INIT
+ dnl For one reason or another, the autogenerated m4/gnulib.m4 wants
+ dnl AM_GNU_GETTEXT([external]) called directly from here.
+ AM_GNU_GETTEXT([external])
+-AM_GNU_GETTEXT_VERSION dnl work around for autoconf-2.57 bug.
++AM_GNU_GETTEXT_VERSION(0.22.4)
+ # The error module still poses merge problems.
+ AC_FUNC_STRERROR_R
+ dnl The following macros can be called by other GNULIB macros but are also
+-- 
+2.44.1
+

diff --git a/dev-vcs/cvs/files/c99-roundup.patch 
b/dev-vcs/cvs/files/c99-roundup.patch
new file mode 100644
index 000000000000..7c8ad479117d
--- /dev/null
+++ b/dev-vcs/cvs/files/c99-roundup.patch
@@ -0,0 +1,122 @@
+From 4df675986524d0e8e76530a3e1bd7860aef9973d Mon Sep 17 00:00:00 2001
+From: Eli Schwartz <[email protected]>
+Date: Sun, 19 May 2024 21:27:38 -0400
+Subject: [PATCH 1/2] m4: fix various missing includes of headers for feature
+ test funcs
+
+---
+ m4/cvs_func_printf_ptr.m4 | 1 +
+ m4/mkdir-slash.m4         | 6 +++++-
+ m4/nanosleep.m4           | 1 +
+ m4/regex.m4               | 1 +
+ m4/rename.m4              | 1 +
+ 5 files changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/m4/cvs_func_printf_ptr.m4 b/m4/cvs_func_printf_ptr.m4
+index 4348e29..f04c135 100644
+--- a/m4/cvs_func_printf_ptr.m4
++++ b/m4/cvs_func_printf_ptr.m4
+@@ -24,6 +24,7 @@ AC_DEFUN([CVS_FUNC_PRINTF_PTR],
+ [AC_CACHE_CHECK(whether printf supports %p,
+   cvs_cv_func_printf_ptr,
+ [AC_TRY_RUN([#include <stdio.h>
++#include <stdlib.h>
+ /* If printf supports %p, exit 0. */
+ int
+ main ()
+diff --git a/m4/mkdir-slash.m4 b/m4/mkdir-slash.m4
+index c1e595b..0ca9a91 100644
+--- a/m4/mkdir-slash.m4
++++ b/m4/mkdir-slash.m4
+@@ -1,4 +1,4 @@
+-#serial 4
++#serial 5
+ 
+ # Copyright (C) 2001, 2003, 2004 Free Software Foundation, Inc.
+ # This file is free software; the Free Software Foundation
+@@ -10,6 +10,7 @@
+ # trailing slashes.
+ AC_DEFUN([gl_FUNC_MKDIR_TRAILING_SLASH],
+ [dnl
++  AC_CHECK_HEADERS_ONCE(unistd.h)
+   AC_CACHE_CHECK([whether mkdir fails due to a trailing slash],
+     gl_cv_func_mkdir_trailing_slash_bug,
+     [
+@@ -19,6 +20,9 @@ AC_DEFUN([gl_FUNC_MKDIR_TRAILING_SLASH],
+ #       include <sys/types.h>
+ #       include <sys/stat.h>
+ #       include <stdlib.h>
++#       ifdef HAVE_UNISTD_H
++#         include <unistd.h>
++#       endif
+       int main ()
+       {
+         rmdir ("confdir-slash");
+diff --git a/m4/nanosleep.m4 b/m4/nanosleep.m4
+index 5590b9b..035e440 100644
+--- a/m4/nanosleep.m4
++++ b/m4/nanosleep.m4
+@@ -39,6 +39,7 @@ AC_DEFUN([gl_FUNC_NANOSLEEP],
+ #     include <time.h>
+ #    endif
+ #   endif
++#   include <stdlib.h>
+ 
+     int
+     main ()
+diff --git a/m4/regex.m4 b/m4/regex.m4
+index 34435de..5988f68 100644
+--- a/m4/regex.m4
++++ b/m4/regex.m4
+@@ -36,6 +36,7 @@ AC_DEFUN([gl_INCLUDED_REGEX],
+ [#include <stdio.h>
+ #include <string.h>
+ #include <regex.h>
++#include <stdlib.h>
+         int
+         main ()
+         {
+diff --git a/m4/rename.m4 b/m4/rename.m4
+index 7d59160..362fdd4 100644
+--- a/m4/rename.m4
++++ b/m4/rename.m4
+@@ -23,6 +23,7 @@ AC_DEFUN([vb_FUNC_RENAME],
+       AC_MSG_ERROR([cannot create temporary directory])
+     AC_TRY_RUN([
+ #       include <stdio.h>
++#       include <stdlib.h>
+         int
+         main ()
+         {
+-- 
+2.44.1
+
+
+From f6e7556c404e1cb3ddb088fab480aa39a9ad0306 Mon Sep 17 00:00:00 2001
+From: Eli Schwartz <[email protected]>
+Date: Sun, 19 May 2024 21:47:06 -0400
+Subject: [PATCH 2/2] fix missing config.h includes preventing functions from
+ being found
+
+_GNU_SOURCE needs to be defined by config.h, so that fputs_unlocked is
+provided by stdio.h (as used by gnulib's unlocked-io module).
+---
+ src/add.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/add.c b/src/add.c
+index 7f94e2b..025cfc9 100644
+--- a/src/add.c
++++ b/src/add.c
+@@ -29,6 +29,8 @@
+  * file to be resurrected.
+  */
+ 
++#include <config.h>
++
+ #include <assert.h>
+ #include "cvs.h"
+ #include "save-cwd.h"
+-- 
+2.44.1
+

Reply via email to