From: David Aguilar Date: Tue, 27 Oct 2015 21:24:48 GMT Subject: [PATCH] difftool: avoid symlinks when reusing worktree files Message-ID: <1445981088-6285-1-git-send-email-davvid@gmail.com> difftool's dir-diff should never reuse a symlink, regardless of what it points to. Tighten use_wt_file() so that it rejects all symlinks. Helped-by: Junio C Hamano Signed-off-by: David Aguilar --- git-difftool.perl | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/git-difftool.perl b/git-difftool.perl index 1abe647..873db57 100755 --- a/git-difftool.perl +++ b/git-difftool.perl @@ -70,13 +70,13 @@ sub use_wt_file my ($repo, $workdir, $file, $sha1) = @_; my $null_sha1 = '0' x 40; - if (! -f "$workdir/$file") { - return (0, $null_sha1); + my $workfile = "$workdir/$file"; + if (-f $workfile && ! -l $workfile) { + my $wt_sha1 = $repo->command_oneline('hash-object', $workfile); + my $use = ($sha1 eq $null_sha1) || ($sha1 eq $wt_sha1); + return ($use, $wt_sha1); } - - my $wt_sha1 = $repo->command_oneline('hash-object', "$workdir/$file"); - my $use = ($sha1 eq $null_sha1) || ($sha1 eq $wt_sha1); - return ($use, $wt_sha1); + return (0, $null_sha1); } sub changed_files -- 2.6.2.282.gfefd36e