aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Klaus Aehlig <aehlig@google.com>2016-06-08 09:17:34 +0000
committerGravatar Yun Peng <pcloudy@google.com>2016-06-08 11:56:29 +0000
commit4c827b50b24acf3c970ad96b9285a6cb29889bfc (patch)
tree845fd9e5e66d740a44b06a6aa854d4adee7e2b4c
parente3108c51acd41f98a78eeed85a558bd50253cc32 (diff)
ExperimentalEventHandler: fix off-by-one error
Java's Arrays.copyOfRange expects as "to" argument the index of the first character not to be copied. As indices start with 0, the first index outside the array is, in fact, the length itself (and not one more than the length). This off-by-one error so far never caused any problems, as Arrays.copyOfRange is guaranteed to accept arbitrary large "to" values and helpfully pads with 0-bytes. As 0-bytes are not shown on most terminals, the output still looked correct. However, that off-by-one error did mess up the output for users of the --experimental_show_artifacts flag. -- Change-Id: I135ff720740db5c224a47668fc7513cbb7110f9f Reviewed-on: https://bazel-review.googlesource.com/#/c/3771 MOS_MIGRATED_REVID=124332337
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java b/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java
index cf4795f683..4652907ace 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/ExperimentalEventHandler.java
@@ -128,7 +128,7 @@ public class ExperimentalEventHandler extends BlazeCommandEventHandler {
terminal.flush();
stream.write(event.getKind() == EventKind.STDOUT ? stdoutBuffer : stderrBuffer);
stream.write(Arrays.copyOf(message, eolIndex + 1));
- byte[] restMessage = Arrays.copyOfRange(message, eolIndex + 1, message.length + 1);
+ byte[] restMessage = Arrays.copyOfRange(message, eolIndex + 1, message.length);
if (event.getKind() == EventKind.STDOUT) {
stdoutBuffer = restMessage;
} else {