From: Sergey Matveev Date: Mon, 22 Dec 2025 15:54:11 +0000 (+0300) Subject: txtar path validation X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=74b0fcb06da22e0ed96ffebd10d59f1f975896d31751eb0915ece73f2e75a4ad;p=dsc.git txtar path validation --- diff --git a/dsc b/dsc index f336f36..1654238 100755 --- a/dsc +++ b/dsc @@ -367,6 +367,16 @@ switch [lindex $argv 0] { } } proc openfh {fn} { + if {[string index $fn 0] == "/"} { + puts stderr "absolute paths are forbidden" + exit 1 + } + foreach e [file split $fn] { + if {$e == ".."} { + puts stderr "relative paths are forbidden" + exit 1 + } + } set bin no if {[string range $fn [expr {[string length $fn]-7}] end] == ":base64"} { set bin yes diff --git a/t/import-path-validation.t b/t/import-path-validation.t new file mode 100755 index 0000000..cca8223 --- /dev/null +++ b/t/import-path-validation.t @@ -0,0 +1,29 @@ +#!/bin/sh + +test_description="$(basename $0)" +. $SHARNESS_TEST_SRCDIR/sharness.sh +export DSC_SCHEMA=$SHARNESS_TEST_DIRECTORY/../schema +PATH=$SHARNESS_TEST_DIRECTORY/..:$PATH +export DSC_STASH=stash DSC_SAVED=saved +mkdir saved + +cat >in <out 2>&1" +test_expect_success "import abs msg" \ + '[ "$(cat out)" = "absolute paths are forbidden" ]' + +cat >in <out 2>&1" +test_expect_success "import rel msg" \ + '[ "$(cat out)" = "relative paths are forbidden" ]' + + +test_done