aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2007-09-28 01:46:13 -0700
committerJunio C Hamano <gitster@pobox.com>2007-09-29 23:54:37 -0700
commit90446a0009d9c9c0a06c512f0836e0d30f78d2d0 (patch)
treef189f0e00b6626f9342d12d4ae9f9e0269b7dc0f
parentcfb8f898a883e2fb2fd5ecec0fe83662b64f1373 (diff)
downloadgit-90446a0009d9c9c0a06c512f0836e0d30f78d2d0.tar.gz
git-90446a0009d9c9c0a06c512f0836e0d30f78d2d0.tar.xz
bundle transport: fix an alloc_ref() call
Currently alloc_ref() expects the length of the refname plus 1 as its parameter, prepares that much space and returns a "ref" structure for the caller to fill the refname. One caller in transport.c::get_refs_from_bundle() however allocated one byte less. It may be a good idea to change the calling convention to give alloc_ref() the length of the refname, but that clean-up can be done in a separate patch. This patch only fixes the bug and makes all callers consistent. There was also one overallocation in connect.c, which would not hurt but was wasteful. This patch fixes it as well. Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--connect.c4
-rw-r--r--transport.c2
2 files changed, 3 insertions, 3 deletions
diff --git a/connect.c b/connect.c
index 8b1e9935a..aee78ff20 100644
--- a/connect.c
+++ b/connect.c
@@ -72,9 +72,9 @@ struct ref **get_remote_heads(int in, struct ref **list,
continue;
if (nr_match && !path_match(name, nr_match, match))
continue;
- ref = alloc_ref(len - 40);
+ ref = alloc_ref(name_len + 1);
hashcpy(ref->old_sha1, old_sha1);
- memcpy(ref->name, buffer + 41, len - 40);
+ memcpy(ref->name, buffer + 41, name_len + 1);
*list = ref;
list = &ref->next;
}
diff --git a/transport.c b/transport.c
index 4f9cddc30..3475ccaf5 100644
--- a/transport.c
+++ b/transport.c
@@ -215,7 +215,7 @@ static struct ref *get_refs_from_bundle(const struct transport *transport)
die ("Could not read bundle '%s'.", transport->url);
for (i = 0; i < data->header.references.nr; i++) {
struct ref_list_entry *e = data->header.references.list + i;
- struct ref *ref = alloc_ref(strlen(e->name));
+ struct ref *ref = alloc_ref(strlen(e->name) + 1);
hashcpy(ref->old_sha1, e->sha1);
strcpy(ref->name, e->name);
ref->next = result;