You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ma...@apache.org on 2017/01/04 20:57:43 UTC
nifi git commit: NIFI-3278 Fixed ArrayIndexOutOfBoundsException in
TextLineDemarcator
Repository: nifi
Updated Branches:
refs/heads/master 083d4043e -> bba675a11
NIFI-3278 Fixed ArrayIndexOutOfBoundsException in TextLineDemarcator
NIFI-3278 addressed PR comments
This closes #1389
Project: http://git-wip-us.apache.org/repos/asf/nifi/repo
Commit: http://git-wip-us.apache.org/repos/asf/nifi/commit/bba675a1
Tree: http://git-wip-us.apache.org/repos/asf/nifi/tree/bba675a1
Diff: http://git-wip-us.apache.org/repos/asf/nifi/diff/bba675a1
Branch: refs/heads/master
Commit: bba675a11dce4fe28617ef93a1c807aba77da200
Parents: 083d404
Author: Oleg Zhurakousky <ol...@suitcase.io>
Authored: Wed Jan 4 12:09:34 2017 -0500
Committer: Matt Burgess <ma...@apache.org>
Committed: Wed Jan 4 15:52:23 2017 -0500
----------------------------------------------------------------------
.../nifi/stream/io/util/TextLineDemarcator.java | 7 +++++--
.../stream/io/util/TextLineDemarcatorTest.java | 21 ++++++++++++++++++++
2 files changed, 26 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/nifi/blob/bba675a1/nifi-commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/util/TextLineDemarcator.java
----------------------------------------------------------------------
diff --git a/nifi-commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/util/TextLineDemarcator.java b/nifi-commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/util/TextLineDemarcator.java
index 124e673..7c918b4 100644
--- a/nifi-commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/util/TextLineDemarcator.java
+++ b/nifi-commons/nifi-utils/src/main/java/org/apache/nifi/stream/io/util/TextLineDemarcator.java
@@ -159,8 +159,11 @@ public class TextLineDemarcator {
this.index = currentIndex + 1;
this.fill();
}
- currentByte = this.buffer[currentIndex + 1];
- crlfLength = currentByte == '\n' ? 2 : 1;
+ crlfLength = 1;
+ if (currentIndex < this.buffer.length - 1) {
+ currentByte = this.buffer[currentIndex + 1];
+ crlfLength = currentByte == '\n' ? 2 : 1;
+ }
}
return crlfLength;
}
http://git-wip-us.apache.org/repos/asf/nifi/blob/bba675a1/nifi-commons/nifi-utils/src/test/java/org/apache/nifi/stream/io/util/TextLineDemarcatorTest.java
----------------------------------------------------------------------
diff --git a/nifi-commons/nifi-utils/src/test/java/org/apache/nifi/stream/io/util/TextLineDemarcatorTest.java b/nifi-commons/nifi-utils/src/test/java/org/apache/nifi/stream/io/util/TextLineDemarcatorTest.java
index ce66cad..cd8b7c5 100644
--- a/nifi-commons/nifi-utils/src/test/java/org/apache/nifi/stream/io/util/TextLineDemarcatorTest.java
+++ b/nifi-commons/nifi-utils/src/test/java/org/apache/nifi/stream/io/util/TextLineDemarcatorTest.java
@@ -51,6 +51,7 @@ public class TextLineDemarcatorTest {
assertNull(demarcator.nextOffsetInfo());
}
+
@Test
public void emptyStreamAndStartWithFilter() {
String data = "";
@@ -59,6 +60,26 @@ public class TextLineDemarcatorTest {
assertNull(demarcator.nextOffsetInfo("hello".getBytes()));
}
+ // this test has no assertions. It's success criteria is validated by lack
+ // of failure (see NIFI-3278)
+ @Test
+ public void endsWithCRWithBufferLengthEqualStringLengthA() {
+ String str = "\r";
+ InputStream is = stringToIs(str);
+ TextLineDemarcator demarcator = new TextLineDemarcator(is, str.length());
+ while (demarcator.nextOffsetInfo() != null) {
+ }
+ }
+
+ @Test
+ public void endsWithCRWithBufferLengthEqualStringLengthB() {
+ String str = "abc\r";
+ InputStream is = stringToIs(str);
+ TextLineDemarcator demarcator = new TextLineDemarcator(is, str.length());
+ while (demarcator.nextOffsetInfo() != null) {
+ }
+ }
+
@Test
public void singleCR() {
InputStream is = stringToIs("\r");