check that requested documents and dirindic─ôs lie within basedir
authorThorsten Glaser <tg@mirbsd.org>
Sun, 7 Oct 2012 22:50:38 +0000 (22:50 +0000)
committerThorsten Glaser <tg@mirbsd.org>
Sun, 7 Oct 2012 22:50:38 +0000 (22:50 +0000)
mksh/annex.cgi

index bccd0be..0127493 100644 (file)
@@ -40,6 +40,7 @@ fi
 
 me=$(realpath "$0")
 cd $(dirname "$(dirname "$me")")
+basedir=$(realpath .)
 shift
 pi=$1
 
@@ -54,6 +55,11 @@ function e403 {
        exit 1
 }
 
+if [[ -n $pi ]]; then
+       i=$(realpath "$pi")
+       [[ -n $i && $i = "$basedir"/* ]] || e403
+fi
+
 [[ -e ${pi:-.} && -r ${pi:-.} ]] || e403
 
 [[ -n $pi ]] && if [[ ! -d $pi ]]; then