void-packages/srcpkgs/fakechroot/patches/fakechroot-2.17.1-sanitize-chroot-path.patch
2013-12-14 07:12:58 +01:00

44 lines
1.5 KiB
Diff

From 922b9be90ccce8f5b01339864f499f6d77505c5f Mon Sep 17 00:00:00 2001
From: Andrew Gregory <andrew.gregory.8@gmail.com>
Date: Fri, 13 Dec 2013 12:31:00 -0500
Subject: [PATCH] chroot: sanitize path
path was not being sanitized if it started with '/' causing chroot calls
to fail when path ended with '/'.
Signed-off-by: Andrew Gregory <andrew.gregory.8@gmail.com>
---
src/chroot.c | 3 +++
test/t/chroot.t | 2 +-
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/chroot.c b/src/chroot.c
index 9e15ff5..7917a9a 100644
--- src/chroot.c
+++ src/chroot.c
@@ -76,6 +76,9 @@
else {
if (*path == '/') {
expand_chroot_rel_path(path);
+ strlcpy(tmp, path, FAKECHROOT_PATH_MAX);
+ dedotdot(tmpptr);
+ path = tmpptr;
}
else {
snprintf(tmp, FAKECHROOT_PATH_MAX, "%s/%s", cwd, path);
diff --git a/test/t/chroot.t b/test/t/chroot.t
index e532a6f..286b863 100755
--- test/t/chroot.t
+++ test/t/chroot.t
@@ -14,7 +14,7 @@ for chroot in chroot fakechroot; do
skip $(( $tap_plan / 2 )) "not root"
else
- for testtree in testtree2 /testtree2 ./testtree2 /./testtree2 testtree2/. testtree2/./.; do
+ for testtree in testtree2 /testtree2 ./testtree2 /./testtree2 testtree2/. testtree2/./. testtree2/; do
t=`$srcdir/$chroot.sh testtree /usr/sbin/chroot $testtree /bin/cat /CHROOT 2>&1`
test "$t" = "testtree/testtree2" || not
ok "$chroot chroot $testtree:" $t
--
1.8.5.1