commit:     1d9b7172e93caccdc5ec6bf9f80dd181e22bc2ab
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Sat Jan 15 01:54:09 2022 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sat Jan 15 01:54:19 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1d9b7172

net-misc/lldpd: backport additional seccomp fixes

Signed-off-by: Sam James <sam <AT> gentoo.org>

 .../lldpd/files/lldpd-1.0.13-r2-glibc-2.33.patch   |  50 ++++++++++
 net-misc/lldpd/lldpd-1.0.13-r2.ebuild              | 106 +++++++++++++++++++++
 2 files changed, 156 insertions(+)

diff --git a/net-misc/lldpd/files/lldpd-1.0.13-r2-glibc-2.33.patch 
b/net-misc/lldpd/files/lldpd-1.0.13-r2-glibc-2.33.patch
new file mode 100644
index 000000000000..62f8cdc2e62b
--- /dev/null
+++ b/net-misc/lldpd/files/lldpd-1.0.13-r2-glibc-2.33.patch
@@ -0,0 +1,50 @@
+https://github.com/lldpd/lldpd/commit/0ea4b1a5e0e9c35d960145d25166e92a9990227f
+https://github.com/lldpd/lldpd/commit/1def824404cfcab9f64b687da1cb7a4b4b51bbe0
+
+From: Antonio Quartulli <a...@unstable.cc>
+Date: Sun, 9 Jan 2022 15:24:55 +0100
+Subject: [PATCH] linux: add access syscall to seccomp rules
+
+Signed-off-by: Antonio Quartulli <a...@unstable.cc>
+--- a/src/daemon/priv-seccomp.c
++++ b/src/daemon/priv-seccomp.c
+@@ -178,6 +178,7 @@ priv_seccomp_init(int remote, int child)
+           (rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(gettimeofday), 
0)) < 0 ||
+           (rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(newfstatat), 
0)) < 0 ||
+           (rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(pread64), 0)) 
< 0 ||
++          (rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(access), 0)) < 
0 ||
+           /* The following are for resolving addresses */
+           (rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(mmap), 0)) < 0 
||
+           (rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(munmap), 0)) < 
0 ||
+
+From: David Sastre Medina <d.sastre.med...@gmail.com>
+Date: Tue, 11 Jan 2022 14:55:05 +0100
+Subject: [PATCH] daemon: add additional syscalls to SECCOMP filter when
+ running in the foreground
+
+Running lldpd in the foreground as follows:
+
+strace -c /usr/sbin/lldpd -d -cfse -D -C lldpd-peer -I lldpd-peer \
+       -S lldpd-system-name -m 192.168.50.6
+
+Requires additional syscalls to be filtered (non relevant syscalls removed):
+
+% time     seconds  usecs/call     calls    errors syscall
+------ ----------- ----------- --------- --------- ----------------
+  0.47    0.000026           6         4           ppoll
+  0.33    0.000018           3         5           rt_sigprocmask
+  0.27    0.000015           3         4           getsockopt
+------ ----------- ----------- --------- --------- ----------------
+100.00    0.005520           8       637        22 total
+--- a/src/daemon/priv-seccomp.c
++++ b/src/daemon/priv-seccomp.c
+@@ -179,6 +179,9 @@ priv_seccomp_init(int remote, int child)
+           (rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(newfstatat), 
0)) < 0 ||
+           (rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(pread64), 0)) 
< 0 ||
+           (rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(access), 0)) < 
0 ||
++          (rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, 
SCMP_SYS(rt_sigprocmask), 0)) < 0 ||
++          (rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(getsockopt), 
0)) < 0 ||
++          (rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(ppoll), 0)) < 
0 ||
+           /* The following are for resolving addresses */
+           (rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(mmap), 0)) < 0 
||
+           (rc = seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(munmap), 0)) < 
0 ||

diff --git a/net-misc/lldpd/lldpd-1.0.13-r2.ebuild 
b/net-misc/lldpd/lldpd-1.0.13-r2.ebuild
new file mode 100644
index 000000000000..0d977a8c72aa
--- /dev/null
+++ b/net-misc/lldpd/lldpd-1.0.13-r2.ebuild
@@ -0,0 +1,106 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit systemd bash-completion-r1 autotools tmpfiles
+
+DESCRIPTION="Implementation of IEEE 802.1ab (LLDP)"
+HOMEPAGE="https://lldpd.github.io/";
+SRC_URI="http://media.luffy.cx/files/${PN}/${P}.tar.gz";
+
+LICENSE="ISC"
+SLOT="0/4.9.0"
+KEYWORDS="~amd64 ~x86"
+IUSE="cdp doc +dot1 +dot3 edp fdp graph +lldpmed old-kernel sanitizers
+       seccomp sonmp snmp static-libs test readline xml"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+       acct-group/lldpd
+       acct-user/lldpd
+       dev-libs/libbsd
+       >=dev-libs/libevent-2.1.11:=
+       sys-libs/readline:0=
+       seccomp? ( sys-libs/libseccomp:= )
+       snmp? ( net-analyzer/net-snmp:=[extensible(+)] )
+       xml? ( dev-libs/libxml2:= )
+"
+DEPEND="${RDEPEND}
+       test? ( dev-libs/check )
+"
+BDEPEND="virtual/pkgconfig
+       doc? (
+               graph? ( app-doc/doxygen[dot] )
+               !graph? ( app-doc/doxygen )
+       )
+"
+
+REQUIRED_USE="graph? ( doc )"
+
+PATCHES=(
+       # Can drop both of these on next release; upstream.
+       "${FILESDIR}/${P}-glibc-2.33.patch"
+       "${FILESDIR}/${P}-r2-glibc-2.33.patch"
+)
+
+src_prepare() {
+       default
+
+       eautoreconf
+}
+
+src_configure() {
+       econf \
+               --without-embedded-libevent \
+               --with-privsep-user=${PN} \
+               --with-privsep-group=${PN} \
+               --with-privsep-chroot=/run/${PN} \
+               --with-lldpd-ctl-socket=/run/${PN}.socket \
+               --with-lldpd-pid-file=/run/${PN}.pid \
+               $(use_enable cdp) \
+               $(use_enable doc doxygen-man) \
+               $(use_enable doc doxygen-pdf) \
+               $(use_enable doc doxygen-html) \
+               $(use_enable dot1) \
+               $(use_enable dot3) \
+               $(use_enable edp) \
+               $(use_enable fdp) \
+               $(use_enable graph doxygen-dot) \
+               $(use_enable lldpmed) \
+               $(use_enable old-kernel oldies) \
+               $(use_enable sonmp) \
+               $(use_enable static-libs static) \
+               $(use_with readline) \
+               $(use_enable sanitizers) \
+               $(use_with seccomp) \
+               $(use_with snmp) \
+               $(use_with xml)
+}
+
+src_compile() {
+       emake
+       use doc && emake doxygen-doc
+}
+
+src_install() {
+       emake DESTDIR="${D}" install
+       find "${D}" -name '*.la' -delete || die
+
+       newinitd "${FILESDIR}"/${PN}-initd-5 ${PN}
+       newconfd "${FILESDIR}"/${PN}-confd-1 ${PN}
+       newbashcomp src/client/completion/lldpcli lldpcli
+
+       use doc && dodoc -r doxygen/html
+
+       insinto /etc
+       doins "${FILESDIR}/lldpd.conf"
+       keepdir /etc/${PN}.d
+
+       systemd_dounit "${FILESDIR}"/${PN}.service
+       newtmpfiles "${FILESDIR}"/tmpfilesd ${PN}.conf
+}
+
+pkg_postinst() {
+       tmpfiles_process ${PN}.conf
+}

Reply via email to