{"thread":{"id":"32555","subject":"[PATCH] upload-pack: only accept commits from \"shallow\" line","startedAt":"2013-01-08T11:32:36Z","lastAt":"2013-01-08T17:27:38Z","messageCount":2,"participants":["Nguyễn Thái Ngọc Duy","Junio C Hamano"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"206282","messageId":"1357644756-18205-1-git-send-email-pclouds@gmail.com","threadId":"32555","inReplyTo":null,"subject":"[PATCH] upload-pack: only accept commits from \"shallow\" line","fromName":"Nguyễn Thái Ngọc Duy","fromEmail":"pclouds@gmail.com","sentAt":"2013-01-08T11:32:36Z","receivedAt":"2013-01-08T11:32:36Z","isPatch":true,"sender":{"key":"pclouds@gmail.com","avatar":"https://avatars.githubusercontent.com/u/720?v=4"},"body":"We only allow cuts at commits, not arbitrary objects. upload-pack will\nfail eventually in register_shallow if a non-commit is given with a\ngeneric error \"Object %s is a %s, not a commit\". Check it early and\ngive a more accurate error.\n\nThis should never show up in an ordinary session. It's for buggy\nclients, or when the user manually edits .git/shallow.\n\nSigned-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n---\n upload-pack.c | 2 ++\n 1 file changed, 2 insertions(+)\n\ndiff --git a/upload-pack.c b/upload-pack.c\nindex 6142421..95d8313 100644\n--- a/upload-pack.c\n+++ b/upload-pack.c\n@@ -603,6 +603,8 @@ static void receive_needs(void)\n \t\t\tobject = parse_object(sha1);\n \t\t\tif (!object)\n \t\t\t\tdie(\"did not find object for %s\", line);\n+\t\t\tif (object->type != OBJ_COMMIT)\n+\t\t\t\tdie(\"invalid shallow object %s\", sha1_to_hex(sha1));\n \t\t\tobject->flags |= CLIENT_SHALLOW;\n \t\t\tadd_object_array(object, NULL, &shallows);\n \t\t\tcontinue;\n-- \n1.8.0.rc0.19.g7bbb31d\n"},{"id":"206307","messageId":"7vfw2bfuut.fsf@alter.siamese.dyndns.org","threadId":"32555","inReplyTo":"1357644756-18205-1-git-send-email-pclouds@gmail.com","subject":"Re: [PATCH] upload-pack: only accept commits from \"shallow\" line","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2013-01-08T17:27:38Z","receivedAt":"2013-01-08T17:27:38Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Nguyễn Thái Ngọc Duy <pclouds@gmail.com> writes:\n\n> We only allow cuts at commits, not arbitrary objects. upload-pack will\n> fail eventually in register_shallow if a non-commit is given with a\n> generic error \"Object %s is a %s, not a commit\". Check it early and\n> give a more accurate error.\n>\n> This should never show up in an ordinary session. It's for buggy\n> clients, or when the user manually edits .git/shallow.\n>\n> Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n> ---\n\nThanks. I agree with you that while this is not wrong per-se, this\nwill not matter in real life.\n\n>  upload-pack.c | 2 ++\n>  1 file changed, 2 insertions(+)\n>\n> diff --git a/upload-pack.c b/upload-pack.c\n> index 6142421..95d8313 100644\n> --- a/upload-pack.c\n> +++ b/upload-pack.c\n> @@ -603,6 +603,8 @@ static void receive_needs(void)\n>  \t\t\tobject = parse_object(sha1);\n>  \t\t\tif (!object)\n>  \t\t\t\tdie(\"did not find object for %s\", line);\n> +\t\t\tif (object->type != OBJ_COMMIT)\n> +\t\t\t\tdie(\"invalid shallow object %s\", sha1_to_hex(sha1));\n>  \t\t\tobject->flags |= CLIENT_SHALLOW;\n>  \t\t\tadd_object_array(object, NULL, &shallows);\n>  \t\t\tcontinue;\n"}]}