diff options
author | Shawn O. Pearce <spearce@spearce.org> | 2006-11-15 22:45:33 -0500 |
---|---|---|
committer | Shawn O. Pearce <spearce@spearce.org> | 2006-11-17 23:56:15 -0500 |
commit | dbccbbda4f4c049552495a87b1747b1b2a1e2823 (patch) | |
tree | 7f0c642f30ca2b2c650fad247a6d8d094fab6b44 /git-gui | |
parent | 4aca740b3915b35d7fa1707be79b268b0cc94123 (diff) | |
download | git-dbccbbda4f4c049552495a87b1747b1b2a1e2823.tar.gz git-dbccbbda4f4c049552495a87b1747b1b2a1e2823.tar.xz |
git-gui: Protect ourselves from funny GIT_DIR/working directory setups.
Since we have some serious problems with the GIT_DIR environment variable
on Windows we cannot let the user use a non-standard GIT_DIR with their
working directory.
So require that the GIT_DIR name is actually ".git", that it exists,
and that its parent directory is our working directory.
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Diffstat (limited to 'git-gui')
-rwxr-xr-x | git-gui | 14 |
1 files changed, 12 insertions, 2 deletions
@@ -167,6 +167,16 @@ if { [catch {set gitdir $env(GIT_DIR)}] error_popup "Cannot find the git directory:\n\n$err" exit 1 } +if {![file isdirectory $gitdir]} { + catch {wm withdraw .} + error_popup "Git directory not found:\n\n$gitdir" + exit 1 +} +if {[lindex [file split $gitdir] end] ne {.git}} { + catch {wm withdraw .} + error_popup "Cannot use funny .git directory:\n\n$gitdir" + exit 1 +} if {[catch {cd [file dirname $gitdir]} err]} { catch {wm withdraw .} error_popup "No working directory [file dirname $gitdir]:\n\n$err" @@ -2040,8 +2050,8 @@ proc do_windows_shortcut {} { --absolute \ $gitdir] puts -nonewline $fd "\"$sh\" --login -c \"" - puts -nonewline $fd "GIT_DIR=\\\"$gd\\\"" - puts -nonewline $fd " \\\"$me\\\"" + puts -nonewline $fd "GIT_DIR='$gd'" + puts -nonewline $fd " '$me'" puts $fd "&\"" close $fd } err]} { |