This is not meant for application to the mainline. It allows your git to
refuse to create a blob whose name is "nul".
---
entry.c | 8 ++++++++
1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/entry.c b/entry.c
index 222aaa3..d24b803 100644
--- a/entry.c
+++ b/entry.c
@@ -81,6 +81,14 @@ static void remove_subtree(const char *path)
static int create_file(const char *path, unsigned int mode)
{
+ if (1) {
+ size_t len = strlen(path);
+ if (3 <= len && !strcmp(path + len - 3, "nul") &&
+ (3 == len || path[len - 4] == '/')) {
+ errno = EPERM;
+ return -1;
+ }
+ }
mode = (mode & 0100) ? 0777 : 0666;
return open(path, O_WRONLY | O_CREAT | O_EXCL, mode);
}--
1.5.6.rc0.43.g823ea