From: Mark Levedahl Date: Tue, 1 Apr 2025 03:01:02 +0000 (-0400) Subject: gitk: limit PATH search to bare executable names X-Git-Tag: v2.50.0-rc0~55^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=16c03089e617ef492427a567d3da7cb8ff28cedd;p=thirdparty%2Fgit.git gitk: limit PATH search to bare executable names The path search overrides used by gitk on Windows are applied to any executable whose name is not 'absolute', meaning that [exec foo/bar ...] will search each element of $PATH to find one with subdirectory foo containing bar. But, per POSIX, and Tcl implementation on all platforms, foo/bar is taken as $(pwd)/foo/bar, and is not searched on $PATH. Fix this descrepency using the same approach applied to git-gui in commit 3f71c97e. The key is that the executable name must have no path component, indicated by [file split $exename] having array length 1. Signed-off-by: Mark Levedahl Signed-off-by: Johannes Sixt --- diff --git a/gitk b/gitk index 899b51ca55..11ad639d06 100755 --- a/gitk +++ b/gitk @@ -58,7 +58,7 @@ if {[is_Windows]} { set i $from_index while {$i < [llength $command_line]} { set cmd [lindex $command_line $i] - if {[file pathtype $cmd] ne "absolute"} { + if {[llength [file split $cmd]] < 2} { set fullpath [_which $cmd] if {$fullpath eq ""} { throw {NOT-FOUND} "$cmd not found in PATH"