[PATCH] upload-pack: only accept commits from shallow line

2013-01-08 Thread Nguyễn Thái Ngọc Duy
We only allow cuts at commits, not arbitrary objects. upload-pack will
fail eventually in register_shallow if a non-commit is given with a
generic error Object %s is a %s, not a commit. Check it early and
give a more accurate error.

This should never show up in an ordinary session. It's for buggy
clients, or when the user manually edits .git/shallow.

Signed-off-by: Nguyễn Thái Ngọc Duy pclo...@gmail.com
---
 upload-pack.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/upload-pack.c b/upload-pack.c
index 6142421..95d8313 100644
--- a/upload-pack.c
+++ b/upload-pack.c
@@ -603,6 +603,8 @@ static void receive_needs(void)
object = parse_object(sha1);
if (!object)
die(did not find object for %s, line);
+   if (object-type != OBJ_COMMIT)
+   die(invalid shallow object %s, 
sha1_to_hex(sha1));
object-flags |= CLIENT_SHALLOW;
add_object_array(object, NULL, shallows);
continue;
-- 
1.8.0.rc0.19.g7bbb31d

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] upload-pack: only accept commits from shallow line

2013-01-08 Thread Junio C Hamano
Nguyễn Thái Ngọc Duy pclo...@gmail.com writes:

 We only allow cuts at commits, not arbitrary objects. upload-pack will
 fail eventually in register_shallow if a non-commit is given with a
 generic error Object %s is a %s, not a commit. Check it early and
 give a more accurate error.

 This should never show up in an ordinary session. It's for buggy
 clients, or when the user manually edits .git/shallow.

 Signed-off-by: Nguyễn Thái Ngọc Duy pclo...@gmail.com
 ---

Thanks. I agree with you that while this is not wrong per-se, this
will not matter in real life.

  upload-pack.c | 2 ++
  1 file changed, 2 insertions(+)

 diff --git a/upload-pack.c b/upload-pack.c
 index 6142421..95d8313 100644
 --- a/upload-pack.c
 +++ b/upload-pack.c
 @@ -603,6 +603,8 @@ static void receive_needs(void)
   object = parse_object(sha1);
   if (!object)
   die(did not find object for %s, line);
 + if (object-type != OBJ_COMMIT)
 + die(invalid shallow object %s, 
 sha1_to_hex(sha1));
   object-flags |= CLIENT_SHALLOW;
   add_object_array(object, NULL, shallows);
   continue;
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html