]> source.dussan.org Git - jgit.git/commitdiff
BinaryHunkInputStream: accept CR-LF 81/190181/2
authorThomas Wolf <thomas.wolf@paranor.ch>
Sun, 30 Jan 2022 16:30:22 +0000 (17:30 +0100)
committerThomas Wolf <thomas.wolf@paranor.ch>
Sun, 30 Jan 2022 16:58:34 +0000 (17:58 +0100)
Let's be lenient and accept hunk lines terminated by CR-LF, too, not
just lines terminated by LF.

Bug: 550111
Change-Id: I7f796df666300ab56cc6c07f22eda45fbf4c941e
Signed-off-by: Thomas Wolf <thomas.wolf@paranor.ch>
org.eclipse.jgit/src/org/eclipse/jgit/util/io/BinaryHunkInputStream.java

index 4f940d77a0f28d4ef7a1aa7882153d58764bb131..2c972b578d264c493468a114bd397ee4de707253 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2021 Thomas Wolf <thomas.wolf@paranor.ch> and others
+ * Copyright (C) 2021, 2022 Thomas Wolf <thomas.wolf@paranor.ch> and others
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Distribution License v. 1.0 which is available at
@@ -90,7 +90,7 @@ public class BinaryHunkInputStream extends InputStream {
                byte[] encoded = new byte[Base85.encodedLength(length)];
                for (int i = 0; i < encoded.length; i++) {
                        int b = in.read();
-                       if (b < 0 || b == '\n') {
+                       if (b < 0 || b == '\r' || b == '\n') {
                                throw new EOFException(MessageFormat.format(
                                                JGitText.get().binaryHunkInvalidLength,
                                                Integer.valueOf(lineNumber)));
@@ -99,6 +99,10 @@ public class BinaryHunkInputStream extends InputStream {
                }
                // Must be followed by a newline; tolerate EOF.
                int b = in.read();
+               if (b == '\r') {
+                       // Be lenient and accept CR-LF, too.
+                       b = in.read();
+               }
                if (b >= 0 && b != '\n') {
                        throw new StreamCorruptedException(MessageFormat.format(
                                        JGitText.get().binaryHunkMissingNewline,