summaryrefslogtreecommitdiff
path: root/builtin-send-pack.c
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2008-10-29 05:17:55 +0000
committerJunio C Hamano <gitster@pobox.com>2008-11-01 23:48:39 -0700
commit30affa1e9a15e848f77c9c14544dd6dd593559d5 (patch)
tree88582765056b932f4ea9bb9cd93464cb7cf29830 /builtin-send-pack.c
parent1442171bc913a9cddae5c6ad0d0a4be3a1ca86e8 (diff)
downloadgit-30affa1e9a15e848f77c9c14544dd6dd593559d5.tar.gz
send-pack: do not send out single-level refs such as refs/stash
Since no version of receive-pack accepts these "funny refs", we should mirror the check when considering the list of refs to send. IOW, don't even make them eligible for matching or mirroring. Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin-send-pack.c')
-rw-r--r--builtin-send-pack.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/builtin-send-pack.c b/builtin-send-pack.c
index 2af9f29341..301f230432 100644
--- a/builtin-send-pack.c
+++ b/builtin-send-pack.c
@@ -132,7 +132,13 @@ static struct ref *remote_refs, **remote_tail;
static int one_local_ref(const char *refname, const unsigned char *sha1, int flag, void *cb_data)
{
struct ref *ref;
- int len = strlen(refname) + 1;
+ int len;
+
+ /* we already know it starts with refs/ to get here */
+ if (check_ref_format(refname + 5))
+ return 0;
+
+ len = strlen(refname) + 1;
ref = xcalloc(1, sizeof(*ref) + len);
hashcpy(ref->new_sha1, sha1);
memcpy(ref->name, refname, len);