]> source.dussan.org Git - jgit.git/commitdiff
Don't copy more than the object size 97/1397/2
authorShawn O. Pearce <spearce@spearce.org>
Tue, 24 Aug 2010 19:59:10 +0000 (12:59 -0700)
committerShawn O. Pearce <spearce@spearce.org>
Wed, 25 Aug 2010 00:37:07 +0000 (17:37 -0700)
If the loader's stream is broken and returns to us more content
than it originally declared as the size of the object, don't
copy that onto the output stream.  Instead throw EOFException
and abort fast.  This way we don't follow an infinite stream,
but instead will at least stop when the size was reached.

Change-Id: I7ec0c470c875f03b1f12a74a9b4d2f6e73b659bb
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
org.eclipse.jgit/src/org/eclipse/jgit/lib/ObjectLoader.java

index e8a125d5753be6f904a4314b7884e244ae6ff7c3..b8d7f371900bd280862f759f1738253895e8b88a 100644 (file)
@@ -169,14 +169,14 @@ public abstract class ObjectLoader {
                                final long sz = in.getSize();
                                byte[] tmp = new byte[1024];
                                long copied = 0;
-                               for (;;) {
+                               while (copied < sz) {
                                        int n = in.read(tmp);
                                        if (n < 0)
-                                               break;
+                                               throw new EOFException();
                                        out.write(tmp, 0, n);
                                        copied += n;
                                }
-                               if (copied != sz)
+                               if (0 <= in.read())
                                        throw new EOFException();
                        } finally {
                                in.close();