]> source.dussan.org Git - jgit.git/commit
UploadPack: Verify clients send only commits for shallow lines 03/55903/3
authorShawn Pearce <spearce@spearce.org>
Mon, 14 Sep 2015 19:18:20 +0000 (12:18 -0700)
committerShawn Pearce <spearce@spearce.org>
Mon, 14 Sep 2015 19:53:34 +0000 (12:53 -0700)
commitb46c4463959f45b32e471e4c10b5ddc71232949e
tree035ba29440ca34bde7cfe111eb1798c63ef385d9
parentdb0adc1e8cfeb19b2f25b6f1850c27865b570303
UploadPack: Verify clients send only commits for shallow lines

If a client mistakenly tries to send a tag object as a shallow line
JGit blindly assumes this is a commit and tries to parse the tag
buffer using the commit parser. This can cause an obtuse error like:

  InvalidObjectIdException: Invalid id: t c0ff331234...

The "t" comes from the "object c0ff331234..." line of the tag tring
to be parsed as though it where the "tree" line of a commit.

Run any client supplied shallow lines through the RevWalk to lookup
the object types. Fail fast with a protocol exception if any of them
are non-commit.

Skip objects not known to this repository. This matches behavior
with git-core's upload-pack, which sliently skips over any shallow
line object named by the client but not known by the server.

Change-Id: Ic6c57a90a42813164ce65c2244705fc42e84d700
org.eclipse.jgit/resources/org/eclipse/jgit/internal/JGitText.properties
org.eclipse.jgit/src/org/eclipse/jgit/internal/JGitText.java
org.eclipse.jgit/src/org/eclipse/jgit/revwalk/RevWalk.java
org.eclipse.jgit/src/org/eclipse/jgit/transport/UploadPack.java