[PATCH v4 0/4] "git apply" safety
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Feb 10, 2015, 22:36 UTC
- 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