This is an automated email from the ASF dual-hosted git repository.
ramyav pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/olingo-odata4.git
The following commit(s) were added to refs/heads/master by this push:
new e429cb2 [OLINGO-1547]Avoid BufferOverFlowException in BatchLineReader
e429cb2 is described below
commit e429cb24ad2415679e6c3da415cb426ff690d8c9
Author: ramya vasanth <[email protected]>
AuthorDate: Fri Sep 17 11:35:14 2021 +0530
[OLINGO-1547]Avoid BufferOverFlowException in BatchLineReader
---
.../core/deserializer/batch/BatchLineReader.java | 18 ++++++++++++------
1 file changed, 12 insertions(+), 6 deletions(-)
diff --git
a/lib/server-core/src/main/java/org/apache/olingo/server/core/deserializer/batch/BatchLineReader.java
b/lib/server-core/src/main/java/org/apache/olingo/server/core/deserializer/batch/BatchLineReader.java
index be1b0e6..16eeb3f 100644
---
a/lib/server-core/src/main/java/org/apache/olingo/server/core/deserializer/batch/BatchLineReader.java
+++
b/lib/server-core/src/main/java/org/apache/olingo/server/core/deserializer/batch/BatchLineReader.java
@@ -145,12 +145,7 @@ public class BatchLineReader {
if (!foundLineEnd) {
byte currentChar = buffer[offset++];
- if (!innerBuffer.hasRemaining()) {
- innerBuffer.flip();
- ByteBuffer tmp = ByteBuffer.allocate(innerBuffer.limit() * 2);
- tmp.put(innerBuffer);
- innerBuffer = tmp;
- }
+ innerBuffer = grantBuffer(innerBuffer);
innerBuffer.put(currentChar);
if (currentChar == LF) {
@@ -166,6 +161,7 @@ public class BatchLineReader {
// Check if there is at least one character
if (limit != EOF && buffer[offset] == LF) {
+ innerBuffer = grantBuffer(innerBuffer);
innerBuffer.put(LF);
offset++;
}
@@ -183,6 +179,16 @@ public class BatchLineReader {
}
}
+ private ByteBuffer grantBuffer(ByteBuffer buffer) {
+ if(!buffer.hasRemaining()) {
+ buffer.flip();
+ ByteBuffer tmp = ByteBuffer.allocate(buffer.limit() *2);
+ tmp.put(buffer);
+ buffer = tmp;
+ }
+ return buffer;
+ }
+
private int fillBuffer() throws IOException {
limit = reader.read(buffer, 0, buffer.length);
offset = 0;