From: Junio C Hamano Date: Tue, 10 Feb 2015 22:36:07 GMT Subject: [PATCH v4 0/4] "git apply" safety Message-ID: <1423607771-27157-1-git-send-email-gitster@pobox.com> In-Reply-To: <1423010662-26497-1-git-send-email-gitster@pobox.com> Git tracks symbolic links; e.g. you can remove files that have been tracked in a directory "dir/file*" and then creates a symbolic link at "dir" to point elsewhere, express such a change as a patchset and then apply it to the original tree. Consequently, applying a patch to update dir/file, when you have "dir" as a symbolic link pointing somewhere, must fail, just like a patch whose preimage does not match what you have in tree you are trying to apply the patch to gets rejected. Also, we fundamentally do not like to touch a path that contains ".git" as a path component. This round uses cache_file_exists() in the last patch to cope with case insensitive filesystems better. The previous round begins here: http://thread.gmane.org/gmane.comp.version-control.git/263341 Junio C Hamano (4): apply: reject input that touches outside the working area apply: do not read from the filesystem under --index apply: do not read from beyond a symbolic link apply: do not touch a file beyond a symbolic link Documentation/git-apply.txt | 12 +++- builtin/apply.c | 142 +++++++++++++++++++++++++++++++++++++++- t/t4122-apply-symlink-inside.sh | 106 ++++++++++++++++++++++++++++++ t/t4139-apply-escape.sh | 141 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 399 insertions(+), 2 deletions(-) create mode 100755 t/t4139-apply-escape.sh -- 2.3.0-185-g073f588