]> Cypherpunks repositories - dsc.git/commitdiff
Safer exec calls
authorSergey Matveev <stargrave@stargrave.org>
Fri, 15 Aug 2025 08:31:25 +0000 (11:31 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Fri, 15 Aug 2025 08:31:25 +0000 (11:31 +0300)
dsc

diff --git a/dsc b/dsc
index d867fdac243c752c6ae93155024b437ece76d4219435c5e169756ac1c7a7c547..7bb19845d416c2864952381924698adfd5306dc340894cfb118ed36d09fccbbb 100755 (executable)
--- a/dsc
+++ b/dsc
@@ -92,7 +92,7 @@ proc find-checker {opt} {
 
 proc run-checker {opt v} {
     global Schema
-    set fh [open "| $Schema/[find-checker $opt]/check $opt" r+]
+    set fh [open |[list "$Schema/[find-checker $opt]/check" $opt 2>@1] r+]
     puts $fh $v
     close $fh w
     set v [read $fh]
@@ -155,11 +155,7 @@ switch [lindex $argv 0] {
         file delete -force $Stash/$opt
     }
     set {
-        if {[llength $argv] == 2} {
-            set v [read -nonewline stdin]
-        } else {
-            set v [lindex $argv 2]
-        }
+        set v [lindex $argv 2]
         if {$v == ""} {
             file delete $Stash/$opt
             exit
@@ -203,12 +199,12 @@ switch [lindex $argv 0] {
             puts $fh [string range $fn [string length $Stash]+1 end]
         }
         close $fh
-        set fh [open "| diff -u -L dirs -L dirs $dirsSaved $dirsStash" r]
+        set fh [open |[list diff -u -L dirs -L dirs $dirsSaved $dirsStash] r]
         puts -nonewline [read $fh]
         catch {close $fh}
         file delete $dirsSaved
         file delete $dirsStash
-        set fh [open "| diff -urN $Saved/$opt $Stash/$opt" r]
+        set fh [open |[list diff -urN $Saved/$opt $Stash/$opt] r]
         set prefixSaved "--- $Saved/"
         set prefixSavedLen [string length $prefixSaved]
         set prefixStash "+++ $Stash/"