Thread (8 messages) flat view 8 messages, 3 authors, 2016-06-15

Re: [PATCH] fetch-pack: fix unadvertised requests validation

From: Junio C Hamano <hidden>
Date: 2016-06-15 23:08:31

Possibly related (same subject, not in this thread)

Gabriel Souza Franco [off-list ref] writes:
Check was introduced in b791642 (filter_ref: avoid overwriting
ref->old_sha1 with garbage, 2015-03-19), but was always false because
ref->old_oid.hash is empty in this case. Instead copy sha1 from ref->name.

Signed-off-by: Gabriel Souza Franco <redacted>
---
Peff, that commit points me at your direction.  And I can see the
original patch avoids overwriting old_sha1 by saving the result from
get_sha1_hex() in a temporary, it is true that old_sha1 is not
updated from the temporary.

The original code before b791642 wanted to say "if ref->name is not
40-hex, continue, and otherwise, do the ref->matched thing" and an
implementation of b791642 that is more faithful to the original
would indeed have been the result of applying this patch from
Gabriel, but I am scratching my head why we have hashcmp() there.

Was it to avoid adding the same thing twice to the resulting list,
or something?

quoted hunk
 fetch-pack.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/fetch-pack.c b/fetch-pack.c
index 01e34b6..83b937b 100644
--- a/fetch-pack.c
+++ b/fetch-pack.c
@@ -569,11 +569,11 @@ static void filter_refs(struct fetch_pack_args *args,
 			if (ref->matched)
 				continue;
 			if (get_sha1_hex(ref->name, sha1) ||
-			    ref->name[40] != '\0' ||
-			    hashcmp(sha1, ref->old_oid.hash))
+			    ref->name[40] != '\0')
 				continue;
 
 			ref->matched = 1;
+			hashcpy(ref->old_oid.hash, sha1);
 			*newtail = copy_ref(ref);
 			newtail = &(*newtail)->next;
 		}
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help