Sören Tempel: 2 testing/nldev: new aport testing/nlmon: new aport 8 files changed, 299 insertions(+), 0 deletions(-)
ln -snf isn't atomic either, but istm that if /dev/fd is pointed somewhere else, surely this is not the right place to fix it? On 2016-03-08 2:05 AM, Timo Teras wrote:
Copy & paste the following snippet into your terminal to import this patchset into git:
curl -s https://lists.alpinelinux.org/~alpine/aports/patches/2397/mbox | git am -3Learn more about email & git
--- ...01-Revert-nldev-set-kernel-buffer-to-16kb.patch | 26 +++++++ ...02-Preserve-the-PATH-environment-variable.patch | 46 +++++++++++ ...Change-the-default-mdev-path-to-sbin-mdev.patch | 41 ++++++++++ .../nldev/0004-arg.h-fixed-argv-checks-order.patch | 28 +++++++ testing/nldev/APKBUILD | 88 ++++++++++++++++++++++ testing/nldev/nldev-trigger.initd | 13 ++++ testing/nldev/nldev.initd | 21 ++++++ 7 files changed, 263 insertions(+) create mode 100644 testing/nldev/0001-Revert-nldev-set-kernel-buffer-to-16kb.patch create mode 100644 testing/nldev/0002-Preserve-the-PATH-environment-variable.patch create mode 100644 testing/nldev/0003-Change-the-default-mdev-path-to-sbin-mdev.patch create mode 100644 testing/nldev/0004-arg.h-fixed-argv-checks-order.patch create mode 100644 testing/nldev/APKBUILD create mode 100644 testing/nldev/nldev-trigger.initd create mode 100644 testing/nldev/nldev.initd diff --git a/testing/nldev/0001-Revert-nldev-set-kernel-buffer-to-16kb.patch b/testing/nldev/0001-Revert-nldev-set-kernel-buffer-to-16kb.patch new file mode 100644 index 0000000..3b8456e --- /dev/null +++ b/testing/nldev/0001-Revert-nldev-set-kernel-buffer-to-16kb.patch @@ -0,0 +1,26 @@ +From 6df459de208c7f148f2c0f06b0712ea1708ed614 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?S=C3=B6ren=20Tempel?= <soeren+git@soeren-tempel.net> +Date: Wed, 10 Feb 2016 22:57:13 +0100 +Subject: [PATCH 1/4] Revert "nldev: set kernel buffer to 16kb" + +This reverts commit 025a4aef1a05cf523fbdf98ed71fd2e7b902d7fd. +--- + nldev.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/nldev.c b/nldev.c +index 018ed86..9153fd2 100644 +--- a/nldev.c ++++ b/nldev.c +@@ -161,7 +161,7 @@ init_netlink_socket(void) + if (fd < 0) + edie("socket"); + +- slen = 16*1024; ++ slen = 128*1024*1024; + if (setsockopt(fd, SOL_SOCKET, SO_RCVBUFFORCE, &slen, + sizeof(slen)) < 0) { + edie("setsockopt"); +-- +2.7.2 + diff --git a/testing/nldev/0002-Preserve-the-PATH-environment-variable.patch b/testing/nldev/0002-Preserve-the-PATH-environment-variable.patch new file mode 100644 index 0000000..d6c4ffe --- /dev/null +++ b/testing/nldev/0002-Preserve-the-PATH-environment-variable.patch @@ -0,0 +1,46 @@ +From 980c9181b9bf44be6007462ef54568759aabbc5a Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?S=C3=B6ren=20Tempel?= <soeren+git@soeren-tempel.net> +Date: Wed, 10 Feb 2016 23:26:23 +0100 +Subject: [PATCH 2/4] Preserve the PATH environment variable + +No idea why this wasn't done before... +--- + nldev.c | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/nldev.c b/nldev.c +index 9153fd2..deabf10 100644 +--- a/nldev.c ++++ b/nldev.c +@@ -193,7 +193,7 @@ main(int argc, char *argv[]) + struct msghdr hdr; + struct iovec iov; + char buf[4097], *subsystem, *runpath, *key, *value, +- cbuf[CMSG_SPACE(sizeof(struct ucred))]; ++ *origpath, cbuf[CMSG_SPACE(sizeof(struct ucred))]; + struct cmsghdr *chdr; + struct ucred *cred; + int i, len, slen, showudev, showkernel; +@@ -203,6 +203,10 @@ main(int argc, char *argv[]) + subsystem = NULL; + runpath = "/bin/mdev"; + ++ origpath = getenv("PATH"); ++ if (!origpath || strlen(origpath) <= 0) ++ origpath = "/sbin:/bin"; ++ + ARGBEGIN { + case 'b': + dofork = 1; +@@ -242,7 +246,7 @@ main(int argc, char *argv[]) + buf[sizeof(buf)-1] = '\0'; + while (poll(&fds, 1, -1) > -1) { + clearenv(); +- setenv("PATH", "/sbin:/bin", 1); ++ setenv("PATH", origpath, 1); + + iov.iov_base = &buf; + iov.iov_len = sizeof(buf); +-- +2.7.2 + diff --git a/testing/nldev/0003-Change-the-default-mdev-path-to-sbin-mdev.patch b/testing/nldev/0003-Change-the-default-mdev-path-to-sbin-mdev.patch new file mode 100644 index 0000000..395f674 --- /dev/null +++ b/testing/nldev/0003-Change-the-default-mdev-path-to-sbin-mdev.patch @@ -0,0 +1,41 @@ +From 5a979c33e4859d07660fad54d253c91202cf2a37 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?S=C3=B6ren=20Tempel?= <soeren+git@soeren-tempel.net> +Date: Wed, 10 Feb 2016 23:29:04 +0100 +Subject: [PATCH 3/4] Change the default mdev path to /sbin/mdev + +You can set it using the -r command line flag but I prefer it when +things work out of the box (the flag is nice to have non the less). +--- + nldev.8 | 2 +- + nldev.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/nldev.8 b/nldev.8 +index b1c18db..45c307b 100644 +--- a/nldev.8 ++++ b/nldev.8 +@@ -56,7 +56,7 @@ Only show netlink messages from libudev. + . + .It Fl r Ar runpath + This option specifies the runpath for the helper that is launched +-on every received netlink event (default: /bin/mdev). ++on every received netlink event (default: /sbin/mdev). + .El + . + .Sh AUTHORS +diff --git a/nldev.c b/nldev.c +index deabf10..a1d529a 100644 +--- a/nldev.c ++++ b/nldev.c +@@ -201,7 +201,7 @@ main(int argc, char *argv[]) + showkernel = 1; + showudev = 1; + subsystem = NULL; +- runpath = "/bin/mdev"; ++ runpath = "/sbin/mdev"; + + origpath = getenv("PATH"); + if (!origpath || strlen(origpath) <= 0) +-- +2.7.2 + diff --git a/testing/nldev/0004-arg.h-fixed-argv-checks-order.patch b/testing/nldev/0004-arg.h-fixed-argv-checks-order.patch new file mode 100644 index 0000000..4fdeb40 --- /dev/null +++ b/testing/nldev/0004-arg.h-fixed-argv-checks-order.patch @@ -0,0 +1,28 @@ +From 686bc79ed87fb9c57afcc523d4dc8e217b03bac6 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?S=C3=B6ren=20Tempel?= <soeren+git@soeren-tempel.net> +Date: Mon, 29 Feb 2016 22:45:43 +0100 +Subject: [PATCH 4/4] arg.h: fixed argv checks order + +This prevents accessing to a potentially out-of-bounds memory section. +--- + arg.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/arg.h b/arg.h +index 2b189fe..c234e75 100644 +--- a/arg.h ++++ b/arg.h +@@ -12,8 +12,8 @@ extern char *argv0; + + /* use main(int argc, char *argv[]) */ + #define ARGBEGIN for (argv0 = *argv, argv++, argc--;\ +- argv[0] && argv[0][1]\ +- && argv[0][0] == '-';\ ++ argv[0] && argv[0][0] == '-'\ ++ && argv[0][1];\ + argc--, argv++) {\ + char _argc;\ + char **_argv;\ +-- +2.7.2 + diff --git a/testing/nldev/APKBUILD b/testing/nldev/APKBUILD new file mode 100644 index 0000000..a254c85 --- /dev/null +++ b/testing/nldev/APKBUILD @@ -0,0 +1,88 @@ +# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net> +# Maintainer: Sören Tempel <soeren+alpine@soeren-tempel.net> +pkgname=nldev +pkgver=0.3_git20160229 +pkgrel=0 +verbase=0.3 +pkgdesc="A simple netlink device manager" +url="http://git.r-36.net/nldev/" +arch="all" +license="MIT" +depends="" +depends_dev="" +makedepends="linux-headers" +install="" +subpackages="$pkgname-doc" +source="http://dev.alpinelinux.org/archive/$pkgname/$pkgname-$pkgver.tar.gz + ${pkgname}.initd + ${pkgname}-trigger.initd + + 0001-Revert-nldev-set-kernel-buffer-to-16kb.patch + 0002-Preserve-the-PATH-environment-variable.patch + 0003-Change-the-default-mdev-path-to-sbin-mdev.patch + 0004-arg.h-fixed-argv-checks-order.patch" + +disturl="dev.alpinelinux.org:/archive/$pkgname" +reporev="e8a7f8c4131d39eaff0ebb186f6ee01a08db3e59" +giturl="git://git.r-36.net/$pkgname" + +_builddir="$srcdir"/$pkgname-$pkgver +build() { + make CFLAGS="$CFLAGS \${INCS} \${CPPFLAGS}" \ + LDFLAGS="$LDFLAGS \${LIBS}" CC="${CC:-gcc}" \ + -C "$_builddir" || return 1 +} + +package() { + cd "$_builddir" + make DESTDIR="$pkgdir" PREFIX=/ \ + MANPREFIX=/usr/share/man install || return 1 + + # Move nldev to /sbin + mkdir -p "$pkgdir"/sbin/ + mv "$pkgdir"/bin/$pkgname "$pkgdir"/sbin/ || return 1 + + # We don't need run_nldev, use the init script instead + rm -f "$pkgdir"/bin/run_$pkgname + + # Install OpenRC service files + for service in ${pkgname} ${pkgname}-trigger; do + install -Dm755 "$srcdir"/$service.initd \ + "$pkgdir"/etc/init.d/$service || return 1 + done + + # Install utility scripts + mkdir -p "$pkgdir"/lib/$pkgname || return 1 + install -m755 mdev/lib/* "$pkgdir"/lib/$pkgname/ || return 1 + + # Install additional documentation + mkdir -p "$pkgdir"/usr/share/doc/$pkgname/examples/ + install -m644 FIXES.md README.md \ + "$pkgdir"/usr/share/doc/$pkgname/ || return 1 + install -m644 mdev/etc/* \ + "$pkgdir"/usr/share/doc/$pkgname/examples || return 1 + install -m755 mdev/lib/* \ + "$pkgdir"/usr/share/doc/$pkgname/examples || return 1 +} + +md5sums="f2963c34927895755f4ab2139497d52a nldev-0.3_git20160229.tar.gz +cfd5fdea112868ef460cd34a60c8bb6a nldev.initd +f57e754d52f06529e82979db8bd3106e nldev-trigger.initd +e565d056ea4dd5c74b308c397e7e27e5 0001-Revert-nldev-set-kernel-buffer-to-16kb.patch +a921cc18e879114a1c8009d2f9cfb552 0002-Preserve-the-PATH-environment-variable.patch +bfc26b861b96d253b89defb14697523a 0003-Change-the-default-mdev-path-to-sbin-mdev.patch +f1909e7952099c1cef74de5c180b81a2 0004-arg.h-fixed-argv-checks-order.patch" +sha256sums="2fb6278b3fa6b0c5055b14572cfa2e278c50c58812a4dd8e64d6edcd0fd4de65 nldev-0.3_git20160229.tar.gz +5bf4054e53415221929973f8e2b96944a138a30091f20a24de94cd062a5fef3a nldev.initd +1ab6163a350a7c7e377f0e6ea9070c736c434c9a55c3ef28438af552effa1714 nldev-trigger.initd +22e295e2f3391c139b735098f11c8dfabf835373ad80a1d12f0df3d4ee4ffc7d 0001-Revert-nldev-set-kernel-buffer-to-16kb.patch +7d47ff02a42273446fed0774658d0f9f199e4d9b1ede3e02143985db6fab3d0f 0002-Preserve-the-PATH-environment-variable.patch +a861166721ecae633bffa91a6ac055c23f3ad5a1070cb7c9a303816326328619 0003-Change-the-default-mdev-path-to-sbin-mdev.patch +b1656f45eed463b265bf5d65b0885fdad0052e3706dd7c5fe34830a49059de45 0004-arg.h-fixed-argv-checks-order.patch" +sha512sums="ea5fb3d77f1cd46561813a16bc48625ab1aa2765eb63df3ae96ff9daeb4e4f3267a8b6a52d316fb17e2132d97a9b34884a356107d11577c7547f4f43df19a8da nldev-0.3_git20160229.tar.gz +022d596e2c598a0904721d042d6b33151c2df5ea5643ba6f8acec4993ce5ce47e68cd7ecfec1236dd68daa306ea6bcc386b4c28ab610ddac8acf7dc79606d17b nldev.initd +0e34e2db640bcfe7ba8b8e2a07a681906e7e6a2fe267f255a216c36e93db5096b7ed4865935ef448aabc8c4c130a786e555113d8ba90bed58f4ae3450890a1ea nldev-trigger.initd +7821f54b0eeab13355d0a534bafc7c07250b91dcd43e334ffe9bcd9ee601680489ade4aa97b45543d38be93279c3cb11357d58497a3fb7e66052bf743917088f 0001-Revert-nldev-set-kernel-buffer-to-16kb.patch +3d592c4f5a8ae1081aa3780d099b98e3c9869cecc1a3d06dff096e8ee1ea00059c8d5c702fdbb6c5829a429a813f37deab7de7164d38887834d62c0da6165173 0002-Preserve-the-PATH-environment-variable.patch +b9128249077981718d34477b5b81655f256f0a28a549099ed20a611d5aeb54e0d837debe623d6f65071a036fd31322454bb99906058e6309b18c0178c5ce3e5e 0003-Change-the-default-mdev-path-to-sbin-mdev.patch +c26d889f3525eea3ff1bd4c9ce7fd5713f3ffa001177d81639616f253fcfdcc5b27e032905582bab9ebeb2d010ca8e0a5e390419ec8b089f45c925f8f8c4554f 0004-arg.h-fixed-argv-checks-order.patch" diff --git a/testing/nldev/nldev-trigger.initd b/testing/nldev/nldev-trigger.initd new file mode 100644 index 0000000..65482d8 --- /dev/null +++ b/testing/nldev/nldev-trigger.initd @@ -0,0 +1,13 @@ +#!/sbin/openrc-run + +depend() { + need nldev + provide dev + keyword -lxc -vserver +} + +start() { + ebegin "Populating /dev with existing devices through uevents" + /bin/nltrigger add all + eend $? +} diff --git a/testing/nldev/nldev.initd b/testing/nldev/nldev.initd new file mode 100644 index 0000000..ea53273 --- /dev/null +++ b/testing/nldev/nldev.initd @@ -0,0 +1,21 @@ +#!/sbin/openrc-run + +name="$SVCNAME" +command="/sbin/$SVCNAME" +command_args="${NLDEV_OPTS:--k}" +pidfile="/var/run/$SVCNAME.pid" +command_background="yes" + +depend() { + provide dev + need sysfs dev-mount + before checkfs fsck + keyword -lxc -vserver +} + +start_pre() { + if [ -e /proc/self/fd ]; then + rm -f /dev/fd 2>/dev/null + ln -sf /proc/self/fd /dev/fd + fi +}
Timo Teras <timo.teras@iki.fi>This looks risky. When restarting this may make /dev/fd unavailable temporarily and break quite a bit of stuff. Why is this here in the first place? If necessary, perhaps use readlink to verify if it needs recreation? And is the 'rm' needed, ln -snf should be able to replace any entry. Thanks, Timo --- Unsubscribe: alpine-aports+unsubscribe@lists.alpinelinux.org Help: alpine-aports+help@lists.alpinelinux.org ---
-- 2.7.2 --- Unsubscribe: alpine-aports+unsubscribe@lists.alpinelinux.org Help: alpine-aports+help@lists.alpinelinux.org ---
Timo Teras <timo.teras@iki.fi>Looks mostly good. But... On Mon, 29 Feb 2016 22:58:39 +0100 Sören Tempel <soeren+git@soeren-tempel.net> wrote:
--- testing/nlmon/APKBUILD | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 testing/nlmon/APKBUILD diff --git a/testing/nlmon/APKBUILD b/testing/nlmon/APKBUILD new file mode 100644 index 0000000..8d426a6 --- /dev/null +++ b/testing/nlmon/APKBUILD @@ -0,0 +1,36 @@ +# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net> +# Maintainer: Sören Tempel <soeren+alpine@soeren-tempel.net> +pkgname=nlmon +pkgver=0.3_git20160208 +pkgrel=0 +verbase=0.3 +pkgdesc="A lightweight udevadm monitor replacement" +url="http://git.r-36.net/nlmon/" +arch="all" +license="MIT" +depends="" +depends_dev="" +makedepends="linux-headers" +install="" +subpackages="$pkgname-doc" +source="http://dev.alpinelinux.org/archive/$pkgname/$pkgname-$pkgver.tar.gz" + +disturl="dev.alpinelinux.org:/archive/$pkgname" +reporev="5881cff90359800b1d01ebc0bf35f53f4a67815d" +giturl="git://git.r-36.net/$pkgname" + +_builddir="$srcdir"/$pkgname-$pkgver +build() { + make CFLAGS="$CFLAGS \${INCS} \${CPPFLAGS}" \ + LDFLAGS="$LDFLAGS \${LIBS}" CC="${CC:-gcc}" \ + -C "$_builddir" || return 1 +} + +package() { + make DESTDIR="$pkgdir" PREFIX=/usr \ + -C "$_builddir" install || return 1 +} + +md5sums="79cc3840879d6370aa5adccc97c7acf2 nlmon-0.3_git20160208.tar.gz" +sha256sums="e9e113d344372c7b9d8321f6fa19a35b190e2989bbda9a005a049b499faef11a nlmon-0.3_git20160208.tar.gz" +sha512sums="581cb69224552fe293f3ed2da783223570e19d84cbab5c12479cf48088522b9a1d565626d1c24690cb2464858f34cfa9595830395e70f36056ab71631afad3a0 nlmon-0.3_git20160208.tar.gz" -- 2.7.2 --- Unsubscribe: alpine-aports+unsubscribe@lists.alpinelinux.org Help: alpine-aports+help@lists.alpinelinux.org ---