diff options
author | Kenny Root <kroot@google.com> | 2010-10-21 15:18:28 -0700 |
---|---|---|
committer | Alex Ray <aray@google.com> | 2013-07-30 13:56:55 -0700 |
commit | e76184c81fba004b2a72fd8b98baef2b15ff1779 (patch) | |
tree | 956336a42d2266ee6ac352941ccc6ced4443f2eb /libs | |
parent | 9d589aa0d63e1eb088b10f065ee7fb0765d2e285 (diff) | |
download | system_core-e76184c81fba004b2a72fd8b98baef2b15ff1779.zip system_core-e76184c81fba004b2a72fd8b98baef2b15ff1779.tar.gz system_core-e76184c81fba004b2a72fd8b98baef2b15ff1779.tar.bz2 |
Initialized check in ZipFileRO::findEntryByName
If a ZipFileRO object is uninitialized, the hash table will not have
been initialized. This condition wasn't checked in findEntryByName.
Bug: 3121109
Change-Id: Ib696e0e7e0cb4dd0fb2e456d6a847e5e8f4fe14e
Diffstat (limited to 'libs')
-rw-r--r-- | libs/utils/ZipFileRO.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/libs/utils/ZipFileRO.cpp b/libs/utils/ZipFileRO.cpp index 5ff1f8f..4261196 100644 --- a/libs/utils/ZipFileRO.cpp +++ b/libs/utils/ZipFileRO.cpp @@ -412,10 +412,18 @@ void ZipFileRO::addToHash(const char* str, int strLen, unsigned int hash) /* * Find a matching entry. * - * Returns 0 if not found. + * Returns NULL if not found. */ ZipEntryRO ZipFileRO::findEntryByName(const char* fileName) const { + /* + * If the ZipFileRO instance is not initialized, the entry number will + * end up being garbage since mHashTableSize is -1. + */ + if (mHashTableSize <= 0) { + return NULL; + } + int nameLen = strlen(fileName); unsigned int hash = computeHash(fileName, nameLen); int ent = hash & (mHashTableSize-1); |