diff --git a/receive-pack.c b/receive-pack.c
index 9026f1bf828abdceb907054bf54ecfb7311df5e1..8f157bc3f0ef1f9d96bca18fc81854fc24bff936 100644 (file)
--- a/receive-pack.c
+++ b/receive-pack.c
char new_hex[60], *old_hex, *lock_name;
int newfd, namelen, written;
+ if (!strncmp(name, "refs/", 5) && check_ref_format(name + 5))
+ return error("refusing to create funny ref '%s' locally",
+ name);
+
namelen = strlen(name);
lock_name = xmalloc(namelen + 10);
memcpy(lock_name, name, namelen);
/* If we have a ".git" directory, chdir to it */
chdir(".git");
- setenv("GIT_DIR", ".", 1);
+ putenv("GIT_DIR=.");
if (access("objects", X_OK) < 0 || access("refs/heads", X_OK) < 0)
die("%s doesn't appear to be a git directory", dir);