summaryrefslogtreecommitdiffstats
path: root/libutils
diff options
context:
space:
mode:
authorAntoine Labour <piman@google.com>2014-07-30 00:56:27 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-07-28 22:45:16 +0000
commit4bb951a85a4888540caba4f14f18e99917d4c994 (patch)
tree9ba5743e24a486deaa93283f803d5fab71c342c5 /libutils
parent2f2e79de0c5cdf5494a54b44b8bee24c5cf2851d (diff)
parent5f6ebc2f9c9820c8faa2f83b265e31842dc5ed6d (diff)
downloadsystem_core-4bb951a85a4888540caba4f14f18e99917d4c994.zip
system_core-4bb951a85a4888540caba4f14f18e99917d4c994.tar.gz
system_core-4bb951a85a4888540caba4f14f18e99917d4c994.tar.bz2
Merge "BlobCache: fix uninitialized memory" into lmp-dev
Diffstat (limited to 'libutils')
-rw-r--r--libutils/BlobCache.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/libutils/BlobCache.cpp b/libutils/BlobCache.cpp
index f00bf14..8edb401 100644
--- a/libutils/BlobCache.cpp
+++ b/libutils/BlobCache.cpp
@@ -213,7 +213,14 @@ status_t BlobCache::flatten(void* buffer, size_t size) const {
memcpy(eheader->mData, keyBlob->getData(), keySize);
memcpy(eheader->mData + keySize, valueBlob->getData(), valueSize);
- byteOffset += align4(entrySize);
+ size_t totalSize = align4(entrySize);
+ if (totalSize > entrySize) {
+ // We have padding bytes. Those will get written to storage, and contribute to the CRC,
+ // so make sure we zero-them to have reproducible results.
+ memset(eheader->mData + keySize + valueSize, 0, totalSize - entrySize);
+ }
+
+ byteOffset += totalSize;
}
return OK;