Fix overflow sanitizer in copyWithAuthor.
The array index calculation in NBLog.cpp causes a runtime error on
integer overflow sanitized builds.
runtime error: unsigned integer overflow: 27 + 4294967295 cannot be
represented in type 'unsigned int'
This restructures the buffer index to avoid the overflow all together.
Bug: 30969751
Test: Compiles, device boots.
Change-Id: I9abb858190ecdeeaede66cf502ceb586467d5c0c
Merged-In: I9abb858190ecdeeaede66cf502ceb586467d5c0c
(cherry picked from commit 9ef855d02352613880d593a94dc6a1d74b363177)
diff --git a/media/libnbaio/NBLog.cpp b/media/libnbaio/NBLog.cpp
index 2f639d2..827cba9 100644
--- a/media/libnbaio/NBLog.cpp
+++ b/media/libnbaio/NBLog.cpp
@@ -331,7 +331,8 @@
*(int*) (buffer + sizeof(entry) + sizeof(HistTsEntry)) = author;
// Update lengths
buffer[offsetof(entry, length)] = sizeof(HistTsEntryWithAuthor);
- buffer[sizeof(buffer) + Entry::kPreviousLengthOffset] = sizeof(HistTsEntryWithAuthor);
+ buffer[offsetof(entry, data) + sizeof(HistTsEntryWithAuthor) + offsetof(ending, length)]
+ = sizeof(HistTsEntryWithAuthor);
// Write new buffer into FIFO
dst->write(buffer, sizeof(buffer));
return EntryIterator(mEntry).next();