diff options
Diffstat (limited to 'meta-openembedded/meta-networking/recipes-netkit')
6 files changed, 221 insertions, 13 deletions
diff --git a/meta-openembedded/meta-networking/recipes-netkit/netkit-rpc/netkit-rpc_0.17.bb b/meta-openembedded/meta-networking/recipes-netkit/netkit-rpc/netkit-rpc_0.17.bb index 9487fdc2c0..ebe867d776 100644 --- a/meta-openembedded/meta-networking/recipes-netkit/netkit-rpc/netkit-rpc_0.17.bb +++ b/meta-openembedded/meta-networking/recipes-netkit/netkit-rpc/netkit-rpc_0.17.bb @@ -4,15 +4,15 @@ SECTION = "net" LICENSE = "SPL-1.0" LIC_FILES_CHKSUM = "file://rpcinfo/rpcinfo.c;beginline=2;endline=3;md5=3e6339e3ce266e1122c5ba293e04bc89" -DEPENDS_append_libc-musl = " libtirpc" +DEPENDS += "libtirpc" SRC_URI = "http://sources.openembedded.org/${BPN}-${PV}.tar.gz \ file://gcc4.patch \ file://0001-rpcgen-Fix-printf-formats.patch \ " SRC_URI[md5sum] = "67212720482ea1aea9182a98653a9642" SRC_URI[sha256sum] = "421d63b414162237a72867061f1bd3e3752a0d962cd5d30b5e933ddad8a14d3b" -CFLAGS_append_libc-musl = " -I${STAGING_INCDIR}/tirpc" -LIBS_append_libc-musl = " -ltirpc" +CFLAGS += "-I${STAGING_INCDIR}/tirpc" +LIBS += "-ltirpc" do_configure () { ./configure --prefix=${prefix} diff --git a/meta-openembedded/meta-networking/recipes-netkit/netkit-rsh/netkit-rsh_0.17.bb b/meta-openembedded/meta-networking/recipes-netkit/netkit-rsh/netkit-rsh_0.17.bb index 3990f7b527..03dd96338a 100644 --- a/meta-openembedded/meta-networking/recipes-netkit/netkit-rsh/netkit-rsh_0.17.bb +++ b/meta-openembedded/meta-networking/recipes-netkit/netkit-rsh/netkit-rsh_0.17.bb @@ -2,7 +2,7 @@ DESCRIPTION = "netkit-rsh includes the rsh daemon and client." SECTION = "net" HOMEPAGE="ftp://ftp.uk.linux.org/pub/linux/Networking/netkit" LICENSE = "BSD-4-Clause" -DEPENDS = "xinetd libgcrypt" +DEPENDS = "xinetd libgcrypt virtual/crypt" LIC_FILES_CHKSUM = "file://rsh/rsh.c;endline=32;md5=487b3c637bdc181d32b2a8543d41b606" @@ -100,3 +100,6 @@ RPROVIDES_${PN}-server = "rshd" RDEPENDS_${PN}-server = "xinetd" RDEPENDS_${PN}-server += "tcp-wrappers" + +# http://errors.yoctoproject.org/Errors/Details/186963/ +EXCLUDE_FROM_WORLD_libc-musl = "1" diff --git a/meta-openembedded/meta-networking/recipes-netkit/netkit-rusers/netkit-rusers/0001-Link-with-libtirpc.patch b/meta-openembedded/meta-networking/recipes-netkit/netkit-rusers/netkit-rusers/0001-Link-with-libtirpc.patch new file mode 100644 index 0000000000..55926468d9 --- /dev/null +++ b/meta-openembedded/meta-networking/recipes-netkit/netkit-rusers/netkit-rusers/0001-Link-with-libtirpc.patch @@ -0,0 +1,79 @@ +From 5746b68ba9dda87586b3ac88fe84031cbc0015f7 Mon Sep 17 00:00:00 2001 +From: Khem Raj <raj.khem@gmail.com> +Date: Fri, 11 May 2018 12:20:03 -0700 +Subject: [PATCH] Link with libtirpc + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +--- +Upstream-Status: Pending + + configure | 2 +- + rpc.rusersd/rusers_proc.c | 7 +------ + rpc.rusersd/rusersd.c | 6 +----- + rup/rup.c | 2 +- + 4 files changed, 4 insertions(+), 13 deletions(-) + +diff --git a/configure b/configure +index 85f6ca6..2d2d4b7 100755 +--- a/configure ++++ b/configure +@@ -147,7 +147,7 @@ else + fi + + LDFLAGS= +-LIBS= ++LIBS="-ltirpc" + + rm -f __conftest* + +diff --git a/rpc.rusersd/rusers_proc.c b/rpc.rusersd/rusers_proc.c +index 9ae6306..f9e237c 100644 +--- a/rpc.rusersd/rusers_proc.c ++++ b/rpc.rusersd/rusers_proc.c +@@ -57,12 +57,7 @@ char rp_rcsid[] = + #define RUT_TIME ut_time + #endif + +-/* Glibc strikes again */ +-#ifdef __GLIBC__ +- #include <rpcsvc/rusers.h> +-#else +- #include "rusers.h" +-#endif ++#include "rusers.h" + + void rusers_service(struct svc_req *rqstp, SVCXPRT *transp); + +diff --git a/rpc.rusersd/rusersd.c b/rpc.rusersd/rusersd.c +index 762be9b..dd355ac 100644 +--- a/rpc.rusersd/rusersd.c ++++ b/rpc.rusersd/rusersd.c +@@ -38,11 +38,7 @@ char rusersd_rcsid[] = + #include <rpc/pmap_clnt.h> + #include <unistd.h> + #include <grp.h> +-#ifdef __GLIBC__ +- #include <rpcsvc/rusers.h> +-#else +- #include "rusers.h" +-#endif ++#include "rusers.h" + + #include "../version.h" + +diff --git a/rup/rup.c b/rup/rup.c +index e5669ff..887f89d 100644 +--- a/rup/rup.c ++++ b/rup/rup.c +@@ -48,7 +48,7 @@ char rcsid[] = "$Id: rup.c,v 1.8 2000/07/22 19:51:40 dholland Exp $"; + + #undef FSHIFT /* Use protocol's shift and scale values */ + #undef FSCALE +-#include <rpcsvc/rstat.h> ++#include "rstat.h" + + #include "../version.h" + +-- +2.17.0 + diff --git a/meta-openembedded/meta-networking/recipes-netkit/netkit-rusers/netkit-rusers_0.17.bb b/meta-openembedded/meta-networking/recipes-netkit/netkit-rusers/netkit-rusers_0.17.bb index 459e39e593..9b8af27f88 100644 --- a/meta-openembedded/meta-networking/recipes-netkit/netkit-rusers/netkit-rusers_0.17.bb +++ b/meta-openembedded/meta-networking/recipes-netkit/netkit-rusers/netkit-rusers_0.17.bb @@ -9,6 +9,7 @@ DEPENDS = " tcp-wrappers libtirpc rpcbind" SRC_URI = "http://http.debian.net/debian/pool/main/n/${BPN}/${BPN}_${PV}.orig.tar.gz;name=archive \ http://http.debian.net/debian/pool/main/n/${BPN}/${BPN}_${PV}-8.diff.gz;name=patch8 \ file://rpc.rusersd-Makefile-fix-parallel-build-issue.patch \ + file://0001-Link-with-libtirpc.patch \ " SRC_URI[archive.md5sum] = "dc99a80b9fde2ab427c874f88f1c1602" @@ -18,10 +19,14 @@ SRC_URI[patch8.sha256sum] = "14882dbdda4e37baa84d55b54b46c7e063a20fc9e04d1be1a28 inherit autotools-brokensep +CFLAGS += "-I${STAGING_INCDIR}/tirpc" +LIBS += "-ltirpc" + do_configure () { ./configure --prefix=${prefix} echo "LDFLAGS=${LDFLAGS}" >> MCONFIG echo "USE_GLIBC=1" >> MCONFIG + echo "LIBS=${LIBS}" >> MCONFIG } do_install () { @@ -68,3 +73,6 @@ FILES_${PN}-dbg = "${prefix}/src/debug \ ${bindir}/.debug ${sbindir}/.debug" RDEPENDS_${PN}-server = "tcp-wrappers xinetd rpcbind" + +# http://errors.yoctoproject.org/Errors/Details/186962/ +EXCLUDE_FROM_WORLD_libc-musl = "1" diff --git a/meta-openembedded/meta-networking/recipes-netkit/netkit-telnet/files/0001-telnet-telnetd-Fix-deadlock-on-cleanup.patch b/meta-openembedded/meta-networking/recipes-netkit/netkit-telnet/files/0001-telnet-telnetd-Fix-deadlock-on-cleanup.patch new file mode 100644 index 0000000000..945785d3ce --- /dev/null +++ b/meta-openembedded/meta-networking/recipes-netkit/netkit-telnet/files/0001-telnet-telnetd-Fix-deadlock-on-cleanup.patch @@ -0,0 +1,114 @@ +From 06ed6a6bf25a22902846097d6b6c97e070c2c326 Mon Sep 17 00:00:00 2001 +From: Seiichi Ishitsuka <ishitsuka.sc@ncos.nec.co.jp> +Date: Fri, 1 Jun 2018 14:27:35 +0900 +Subject: [PATCH] telnetd: Fix deadlock on cleanup + +The cleanup function in telnetd is called both directly and on SIGCHLD +signals. This, unfortunately, triggered a deadlock in eglibc 2.9 while +running on a 2.6.31.11 kernel. + +What we were seeing is hangs like these: + + (gdb) bt + #0 0xb7702424 in __kernel_vsyscall () + #1 0xb7658e61 in __lll_lock_wait_private () from ./lib/libc.so.6 + #2 0xb767e7b5 in _L_lock_15 () from ./lib/libc.so.6 + #3 0xb767e6e0 in utmpname () from ./lib/libc.so.6 + #4 0xb76bcde7 in logout () from ./lib/libutil.so.1 + #5 0x0804c827 in cleanup () + #6 <signal handler called> + #7 0xb7702424 in __kernel_vsyscall () + #8 0xb7641003 in __fcntl_nocancel () from ./lib/libc.so.6 + #9 0xb767e0c3 in getutline_r_file () from ./lib/libc.so.6 + #10 0xb767d675 in getutline_r () from ./lib/libc.so.6 + #11 0xb76bce42 in logout () from ./lib/libutil.so.1 + #12 0x0804c827 in cleanup () + #13 0x0804a0b5 in telnet () + #14 0x0804a9c3 in main () + +and what has happened here is that the user closes the telnet session +via the escape character. This causes telnetd to call cleanup in frame +the SIGCHLD signal is delivered while telnetd is executing cleanup. + +Telnetd then calls the signal handler for SIGCHLD, which is cleanup(). +Ouch. The actual deadlock is in libc. getutline_r in frame #10 gets the +__libc_utmp_lock lock, and utmpname above does the same thing in frame + +The fix registers the SIGCHLD handler as cleanup_sighandler, and makes +cleanup disable the SIGCHLD signal before calling cleanup_sighandler. + +Signed-off-by: Simon Kagstrom <simon.kagstrom@netinsight.net> + +The patch was imported from the Ubuntu netkit-telnet package. +(https://bugs.launchpad.net/ubuntu/+source/netkit-telnet/+bug/507455) + +A previous patch declaring attributes of functions, but it is not used +in upstream. + +Signed-off-by: Seiichi Ishitsuka <ishitsuka.sc@ncos.nec.co.jp> +--- + telnetd/ext.h | 1 + + telnetd/sys_term.c | 17 ++++++++++++++++- + telnetd/telnetd.c | 2 +- + 3 files changed, 18 insertions(+), 2 deletions(-) + +diff --git a/telnetd/ext.h b/telnetd/ext.h +index b98d6ec..08f9d07 100644 +--- a/telnetd/ext.h ++++ b/telnetd/ext.h +@@ -97,6 +97,7 @@ void add_slc(int, int, int); + void check_slc(void); + void change_slc(int, int, int); + void cleanup(int); ++void cleanup_sighandler(int); + void clientstat(int, int, int); + void copy_termbuf(char *, int); + void deferslc(void); +diff --git a/telnetd/sys_term.c b/telnetd/sys_term.c +index 5b4aa84..c4fb0f7 100644 +--- a/telnetd/sys_term.c ++++ b/telnetd/sys_term.c +@@ -719,7 +719,7 @@ static void addarg(struct argv_stuff *avs, const char *val) { + * This is the routine to call when we are all through, to + * clean up anything that needs to be cleaned up. + */ +-void cleanup(int sig) { ++void cleanup_sighandler(int sig) { + char *p; + (void)sig; + +@@ -742,3 +742,18 @@ void cleanup(int sig) { + shutdown(net, 2); + exit(0); + } ++ ++void cleanup(int sig) { ++ sigset_t mask, oldmask; ++ ++ /* Set up the mask of signals to temporarily block. */ ++ sigemptyset (&mask); ++ sigaddset (&mask, SIGCHLD); ++ ++ /* Block SIGCHLD while running cleanup */ ++ sigprocmask (SIG_BLOCK, &mask, &oldmask); ++ ++ cleanup_sighandler(sig); ++ /* Technically not needed since cleanup_sighandler exits */ ++ sigprocmask (SIG_UNBLOCK, &mask, NULL); ++} +diff --git a/telnetd/telnetd.c b/telnetd/telnetd.c +index 9ace838..788919c 100644 +--- a/telnetd/telnetd.c ++++ b/telnetd/telnetd.c +@@ -833,7 +833,7 @@ void telnet(int f, int p) + signal(SIGTTOU, SIG_IGN); + #endif + +- signal(SIGCHLD, cleanup); ++ signal(SIGCHLD, cleanup_sighandler); + + #ifdef TIOCNOTTY + { +-- +2.7.4 + diff --git a/meta-openembedded/meta-networking/recipes-netkit/netkit-telnet/netkit-telnet_0.17.bb b/meta-openembedded/meta-networking/recipes-netkit/netkit-telnet/netkit-telnet_0.17.bb index 807b566449..db4b1c98cc 100644 --- a/meta-openembedded/meta-networking/recipes-netkit/netkit-telnet/netkit-telnet_0.17.bb +++ b/meta-openembedded/meta-networking/recipes-netkit/netkit-telnet/netkit-telnet_0.17.bb @@ -5,14 +5,18 @@ DEPENDS = "ncurses" LICENSE = "BSD" LIC_FILES_CHKSUM = "file://telnet/telnet.cc;beginline=2;endline=3;md5=780868e7b566313e70cb701560ca95ef" -SRC_URI = "ftp://ftp.uk.linux.org/pub/linux/Networking/netkit/${BP}.tar.gz \ +SRC_URI = "http://ftp.linux.org.uk/pub/linux/Networking/netkit/${BP}.tar.gz \ file://To-aviod-buffer-overflow-in-telnet.patch \ file://Warning-fix-in-the-step-of-install.patch \ file://telnet-xinetd \ file://cross-compile.patch \ file://0001-telnet-telnetd-Fix-print-format-strings.patch \ + file://0001-telnet-telnetd-Fix-deadlock-on-cleanup.patch \ " +UPSTREAM_CHECK_URI = "${DEBIAN_MIRROR}/main/n/netkit-telnet/" +UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)\.orig\.tar" + EXTRA_OEMAKE = "INSTALLROOT=${D} SBINDIR=${sbindir} DAEMONMODE=755 \ MANMODE=644 MANDIR=${mandir}" @@ -46,16 +50,16 @@ do_install () { install -p -m644 ${WORKDIR}/telnet-xinetd ${D}/etc/xinetd.d/telnet } -pkg_postinst_${PN} () { -#!/bin/sh - update-alternatives --install ${bindir}/telnet telnet telnet.${PN} 100 -} +inherit update-alternatives -pkg_prerm_${PN} () { -#!/bin/sh - update-alternatives --remove telnet telnet.${PN} 100 -} +ALTERNATIVE_PRIORITY = "100" +ALTERNATIVE_${PN} = "telnet" +ALTERNATIVE_LINK_NAME[telnet] = "${bindir}/telnet" +ALTERNATIVE_TARGET[telnet] = "${bindir}/telnet.${PN}" SRC_URI[md5sum] = "d6beabaaf53fe6e382c42ce3faa05a36" SRC_URI[sha256sum] = "9c80d5c7838361a328fb6b60016d503def9ce53ad3c589f3b08ff71a2bb88e00" FILES_${PN} += "${sbindir}/in.* ${libdir}/* ${sysconfdir}/xinetd.d/*" + +# http://errors.yoctoproject.org/Errors/Details/186954/ +EXCLUDE_FROM_WORLD_libc-musl = "1" |