commit: 5cf9bcd40dcbf6774ee5bb3582655556a6747ab5 Author: Sam James <sam <AT> gentoo <DOT> org> AuthorDate: Tue Jun 21 05:18:00 2022 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Tue Jun 21 05:21:12 2022 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=5cf9bcd4
sys-libs/gpm: fix -Wformat-security; update systemd unit Closes: https://bugs.gentoo.org/539320 Closes: https://bugs.gentoo.org/792822 Signed-off-by: Sam James <sam <AT> gentoo.org> sys-libs/gpm/files/gpm-1.20.7-warnings.patch | 202 +++++++++++++++++++++++++++ sys-libs/gpm/files/gpm.service-r1 | 11 ++ sys-libs/gpm/gpm-1.20.7-r5.ebuild | 112 +++++++++++++++ 3 files changed, 325 insertions(+) diff --git a/sys-libs/gpm/files/gpm-1.20.7-warnings.patch b/sys-libs/gpm/files/gpm-1.20.7-warnings.patch new file mode 100644 index 000000000000..21838ee24bf5 --- /dev/null +++ b/sys-libs/gpm/files/gpm-1.20.7-warnings.patch @@ -0,0 +1,202 @@ +https://github.com/telmich/gpm/commit/dbd2e04665da885805a2c3e7dc2ee4b733d3c7cd +https://github.com/telmich/gpm/pull/10 +https://bugs.gentoo.org/539320 + +From 7d21d7f469d90c2d55b23926c866bba635aa7e6f Mon Sep 17 00:00:00 2001 +From: Mike Frysinger <vap...@gentoo.org> +Date: Sun, 14 Feb 2016 18:05:49 -0500 +Subject: [PATCH 1/5] report/oops: constify format strings + +--- a/src/headers/gpm.h ++++ b/src/headers/gpm.h +@@ -280,10 +280,10 @@ int Gpm_GetSnapshot(Gpm_Event *ePtr); + char *Gpm_get_console( void ); + int Gpm_x_high_y(int base, int pot_y); + int Gpm_cnt_digits(int number); +-void gpm_oops(int line, char *file, char *text, ... ); ++void gpm_oops(int line, const char *file, const char *text, ... ); + + /* report.c / report-lib.c */ +-void gpm_report(int line, char *file, int stat, char *text, ... ); ++void gpm_report(int line, const char *file, int stat, const char *text, ... ); + + #ifdef __cplusplus + }; +--- a/src/headers/message.h ++++ b/src/headers/message.h +@@ -226,7 +226,7 @@ + /* #define GPM_MESS_ "" */ + + /* functions */ +-void gpm_report(int line, char *file, int stat, char *text, ... ); ++void gpm_report(int line, const char *file, int stat, const char *text, ... ); + + /* rest of wd.h */ + #ifdef HAVE_SYSLOG_H +--- a/src/lib/report-lib.c ++++ b/src/lib/report-lib.c +@@ -24,9 +24,9 @@ + + #include "headers/message.h" + +-void gpm_report(int line, char *file, int stat, char *text, ... ) ++void gpm_report(int line, const char *file, int stat, const char *text, ... ) + { +- char *string = NULL; ++ const char *string = NULL; + int log_level; + va_list ap; + +--- a/src/prog/mouse-test.c ++++ b/src/prog/mouse-test.c +@@ -182,7 +182,7 @@ Gpm_Type *(*I_serial)(int fd, unsigned short flags, struct Gpm_Type *type, + /*----------------------------------------------------------------------------- + Place the description here. + -----------------------------------------------------------------------------*/ +-int mousereopen(int oldfd, char *name, Gpm_Type *type) ++int mousereopen(int oldfd, const char *name, Gpm_Type *type) + { + int fd; + if (!type) type=mice+1; /* ms */ +--- a/src/report.c ++++ b/src/report.c +@@ -69,7 +69,7 @@ + * + */ + +-void gpm_report(int line, char *file, int stat, char *text, ... ) ++void gpm_report(int line, const char *file, int stat, const char *text, ...) + { + FILE *console = NULL; + va_list ap, ap3; + +From 7ba518ff8b5e5c06d0a74b1fecf3b682f14c631c Mon Sep 17 00:00:00 2001 +From: Mike Frysinger <vap...@gentoo.org> +Date: Sun, 14 Feb 2016 18:07:46 -0500 +Subject: [PATCH 2/5] report: avoid -Wformat-security warnings + +Some functions warn when you pass a string to a printf style function +that is a dynamic buffer as its contents cannot be verified. Since we +don't want to support that here, just use %s. +--- a/src/lib/report-lib.c ++++ b/src/lib/report-lib.c +@@ -47,7 +47,7 @@ void gpm_report(int line, const char *file, int stat, const char *text, ... ) + log_level = LOG_CRIT; break; + } + #ifdef HAVE_VSYSLOG +- syslog(log_level, string); ++ syslog(log_level, "%s", string); + vsyslog(log_level, text, ap); + #else + fprintf(stderr,"%s[%s(%d)]:\n",string,file,line); +--- a/src/prog/mouse-test.c ++++ b/src/prog/mouse-test.c +@@ -189,7 +189,7 @@ int mousereopen(int oldfd, const char *name, Gpm_Type *type) + close(oldfd); + usleep(100000); + fd=open(name,O_RDWR); +- if (fd < 0) gpm_report(GPM_PR_OOPS,name); ++ if (fd < 0) gpm_report(GPM_PR_OOPS, "%s", name); + (*I_serial)(fd,type->flags,type,1,&type->name); /* ms initialization */ + return fd; + } + +From c3717d54b67133fd14ce4f2166f61e529a1dcfe4 Mon Sep 17 00:00:00 2001 +From: Mike Frysinger <vap...@gentoo.org> +Date: Sun, 14 Feb 2016 18:08:54 -0500 +Subject: [PATCH 3/5] update ignored file list + +--- a/.gitignore ++++ b/.gitignore +@@ -11,6 +11,7 @@ Makefile + Makefile.include + /aclocal.m4 + /autom4te.cache ++/config.cache + /config.log + /config.status + /configure +@@ -29,7 +30,7 @@ Makefile.include + /src/gpm + /src/gpm2/tmp + /src/gpm2/out +-/src/lib/libgpm.so.* ++/src/lib/libgpm.so* + /src/prog/disable-paste + /src/prog/display-buttons + /src/prog/display-coords + +From 01265c7ac5f86a02a7cec323f34a3b54e5973872 Mon Sep 17 00:00:00 2001 +From: Mike Frysinger <vap...@gentoo.org> +Date: Sun, 14 Feb 2016 21:02:48 -0500 +Subject: [PATCH 4/5] report/oops: add attributes to mark as printf functions + +This allows gcc to do printf checking on calls to these funcs to make +sure they're being called correctly. +--- a/src/headers/gpm.h ++++ b/src/headers/gpm.h +@@ -280,9 +280,15 @@ int Gpm_GetSnapshot(Gpm_Event *ePtr); + char *Gpm_get_console( void ); + int Gpm_x_high_y(int base, int pot_y); + int Gpm_cnt_digits(int number); ++#ifdef __GNUC__ ++__attribute__((__format__(printf, 3, 4))) ++#endif + void gpm_oops(int line, const char *file, const char *text, ... ); + + /* report.c / report-lib.c */ ++#ifdef __GNUC__ ++__attribute__((__format__(printf, 4, 5))) ++#endif + void gpm_report(int line, const char *file, int stat, const char *text, ... ); + + #ifdef __cplusplus +--- a/src/headers/message.h ++++ b/src/headers/message.h +@@ -226,6 +226,9 @@ + /* #define GPM_MESS_ "" */ + + /* functions */ ++#ifdef __GNUC__ ++__attribute__((__format__(printf, 4, 5))) ++#endif + void gpm_report(int line, const char *file, int stat, const char *text, ... ); + + /* rest of wd.h */ + +From 85b451a188cfc8aa6233df55ec0c5dfcd203786f Mon Sep 17 00:00:00 2001 +From: Mike Frysinger <vap...@gentoo.org> +Date: Sun, 14 Feb 2016 21:08:28 -0500 +Subject: [PATCH 5/5] clean up a few unused funcs/vars + +--- a/src/prog/gpm-root.y ++++ b/src/prog/gpm-root.y +@@ -443,6 +443,7 @@ void f__fix(struct passwd *pass) + } + + /*---------------------------------------------------------------------*/ ++#if 0 + static int f_debug_one(FILE *f, Draw *draw) + { + DrawItem *ip; +@@ -465,6 +466,7 @@ static int f_debug_one(FILE *f, Draw *draw) + #undef LINE + return 0; + } ++#endif + + int f_debug(int mode, DrawItem *self, int uid) + { +@@ -960,10 +962,8 @@ static inline void scr_dump(int fd, FILE *f, unsigned char *buffer, int vc) + /*------------*/ + static inline void scr_restore(int fd, FILE *f, unsigned char *buffer, int vc) + { +- int x,y, dumpfd; ++ int dumpfd; + char dumpname[20]; +- +- x=buffer[2]; y=buffer[3]; + + /* WILL NOT WORK WITH DEVFS! FIXME! */ + sprintf(dumpname,"/dev/vcsa%i",vc); + diff --git a/sys-libs/gpm/files/gpm.service-r1 b/sys-libs/gpm/files/gpm.service-r1 new file mode 100644 index 000000000000..105649870aa0 --- /dev/null +++ b/sys-libs/gpm/files/gpm.service-r1 @@ -0,0 +1,11 @@ +[Unit] +Description=Console Mouse manager +After=syslog.target + +[Service] +ExecStart=/usr/sbin/gpm -m /dev/input/mice -t exps2 +Type=forking +PIDFile=/run/gpm.pid + +[Install] +WantedBy=multi-user.target diff --git a/sys-libs/gpm/gpm-1.20.7-r5.ebuild b/sys-libs/gpm/gpm-1.20.7-r5.ebuild new file mode 100644 index 000000000000..63d7c8b10fec --- /dev/null +++ b/sys-libs/gpm/gpm-1.20.7-r5.ebuild @@ -0,0 +1,112 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit autotools linux-info systemd usr-ldscript multilib-minimal + +DESCRIPTION="Console-based mouse driver" +HOMEPAGE="https://www.nico.schottelius.org/software/gpm/" +SRC_URI=" + https://www.nico.schottelius.org/software/${PN}/archives/${P}.tar.lzma + mirror://gentoo/${P}-docs.patch.xz" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" +IUSE="selinux" + +RDEPEND=" + sys-libs/ncurses:=[${MULTILIB_USEDEP}] + selinux? ( sec-policy/selinux-gpm )" +DEPEND="${RDEPEND}" +BDEPEND=" + app-arch/xz-utils + sys-apps/texinfo + virtual/yacc" + +CONFIG_CHECK="~INPUT_MOUSEDEV" +ERROR_INPUT_MOUSEDEV="CONFIG_INPUT_MOUSEDEV:\tis not set (required to expose mice for GPM)" + +pkg_pretend() { + check_extra_config +} + +src_prepare() { + eapply "${FILESDIR}"/${P}-sysmacros.patch + + # Hack up the docs until we get this sorted upstream. + # https://github.com/telmich/gpm/issues/8 + eapply "${WORKDIR}"/${P}-docs.patch + touch -r . doc/* || die + + # bug #629774 + eapply "${FILESDIR}"/${P}-glibc-2.26.patch + # bug #705878 + eapply "${FILESDIR}"/${P}-gcc-10.patch + # bug #829581 + eapply "${FILESDIR}"/${P}-musl.patch + # + eapply "${FILESDIR}"/${P}-gcc-include.patch + eapply "${FILESDIR}"/${P}-signedness.patch + eapply "${FILESDIR}"/${P}-warnings.patch + + eapply_user + + # Fix ABI values + sed -i \ + -e '/^abi_lev=/s:=.*:=1:' \ + -e '/^abi_age=/s:=.*:=20:' \ + configure.ac.footer || die + # Rebuild autotools since release doesn't include them. + # Should be fixed with the next release though. + # https://github.com/telmich/gpm/pull/15 + sed -i -e '/ACLOCAL/,$d' autogen.sh || die + ./autogen.sh + eautoreconf + + # Out-of-tree builds are broken. + # https://github.com/telmich/gpm/issues/16 + multilib_copy_sources +} + +multilib_src_configure() { + # emacs support disabled due to bug #99533, bug #335900 + econf \ + --disable-static \ + --sysconfdir="${EPREFIX}"/etc/gpm \ + emacs="${BROOT}"/bin/false +} + +_emake() { + emake \ + EMACS=: ELISP="" \ + $(multilib_is_native_abi || echo "PROG= ") \ + "$@" +} + +multilib_src_compile() { + _emake +} + +multilib_src_test() { + _emake check +} + +multilib_src_install() { + _emake DESTDIR="${D}" install + + dosym libgpm.so.1 /usr/$(get_libdir)/libgpm.so + gen_usr_ldscript -a gpm +} + +multilib_src_install_all() { + insinto /etc/gpm + doins conf/gpm-*.conf + + dodoc README TODO doc/Announce doc/FAQ doc/README* + + newinitd "${FILESDIR}"/gpm.rc6-2 gpm + newconfd "${FILESDIR}"/gpm.conf.d gpm + systemd_newunit "${FILESDIR}"/gpm.service-r1 gpm.service +}