summaryrefslogtreecommitdiff
path: root/lib/commit.tcl
diff options
context:
space:
mode:
authorJohannes Sixt <j6t@kdbg.org>2025-04-21 17:07:10 +0200
committerTaylor Blau <me@ttaylorr.com>2025-05-23 17:04:23 -0400
commitc2e8904258544f3d79dc4e96d1269c0ad8124db3 (patch)
tree765508ff33690a5d1b7e3c7c7c3fb1070c74215a /lib/commit.tcl
parent8255167b26003767b0ab50f498ffec33f80c2ef2 (diff)
git-gui: treat file names beginning with "|" as relative paths
The Tcl 'open' function has a very wide interface. It can open files as well as pipes to external processes. The difference is made only by the first character of the file name: if it is "|", a process is spawned. We have a number of calls of Tcl 'open' that take a file name from the environment in which Git GUI is running. Be prepared that insane values are injected. In particular, when we intend to open a file, do not take a file name that happens to begin with "|" as a request to run a process. Signed-off-by: Johannes Sixt <j6t@kdbg.org> Signed-off-by: Taylor Blau <me@ttaylorr.com>
Diffstat (limited to 'lib/commit.tcl')
-rw-r--r--lib/commit.tcl4
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/commit.tcl b/lib/commit.tcl
index 11379f8ad3..8d135845a5 100644
--- a/lib/commit.tcl
+++ b/lib/commit.tcl
@@ -225,7 +225,7 @@ A good commit message has the following format:
# -- Build the message file.
#
set msg_p [gitdir GITGUI_EDITMSG]
- set msg_wt [open $msg_p w]
+ set msg_wt [safe_open_file $msg_p w]
fconfigure $msg_wt -translation lf
setup_commit_encoding $msg_wt
puts $msg_wt $msg
@@ -409,7 +409,7 @@ A rescan will be automatically started now.
if {$commit_type ne {normal}} {
append reflogm " ($commit_type)"
}
- set msg_fd [open $msg_p r]
+ set msg_fd [safe_open_file $msg_p r]
setup_commit_encoding $msg_fd 1
gets $msg_fd subject
close $msg_fd