Fix debug output.
If we have fewer bytes left in the buffer than
the output alignment, we would read out of bounds
and output (partially) incorrect data.
Test: debug output is correct
(cherry picked from commit 0d9dda2b69c47707e9fdf39d68b04b8edf5623ef)
Bug: 129785390
Change-Id: I66913c58295ccd8e1955a73a17f6eed45ca6cd1e
diff --git a/libs/binder/Debug.cpp b/libs/binder/Debug.cpp
index f38bbb2..a1c2a8b 100644
--- a/libs/binder/Debug.cpp
+++ b/libs/binder/Debug.cpp
@@ -221,7 +221,11 @@
for (word = 0; word < bytesPerLine; ) {
- const size_t startIndex = word+(alignment-(alignment?1:0));
+ size_t align_offset = alignment-(alignment?1:0);
+ if (remain > 0 && (size_t)remain <= align_offset) {
+ align_offset = remain - 1;
+ }
+ const size_t startIndex = word+align_offset;
for (index = 0; index < alignment || (alignment == 0 && index < bytesPerLine); index++) {