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
This commit is contained in:
Kenny Root 2010-10-21 15:18:28 -07:00
parent e739a5257d
commit 06dbe50a1a

View File

@ -412,10 +412,18 @@ void ZipFileRO::addToHash(const char* str, int strLen, unsigned int hash)
/* /*
* Find a matching entry. * Find a matching entry.
* *
* Returns 0 if not found. * Returns NULL if not found.
*/ */
ZipEntryRO ZipFileRO::findEntryByName(const char* fileName) const 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); int nameLen = strlen(fileName);
unsigned int hash = computeHash(fileName, nameLen); unsigned int hash = computeHash(fileName, nameLen);
int ent = hash & (mHashTableSize-1); int ent = hash & (mHashTableSize-1);