Remove usage of mFileName in ObbInfo
This field was not being set but was used in storage_manager.cpp:89,
which constructed a String16 using the nullptr. This internally
calls strlen on the null pointer, which causes a seg fault. Since
mFileName is not being set and getFileName has no other callsites,
remove the field altogether so nobody else tries to use it and pass
in the expected value at its only callsite.
Test: Calling AStorageManager_mountObb from NDK does not result in
a crash.
Signed-off-by: Sam Gao <ssgao@meta.com>
Upstream from Meta.
Change-Id: I4374148f466dacd62c659d3c94fd309674cb2d34
diff --git a/libs/androidfw/include/androidfw/ObbFile.h b/libs/androidfw/include/androidfw/ObbFile.h
index 3dbf997d..38ece5c1 100644
--- a/libs/androidfw/include/androidfw/ObbFile.h
+++ b/libs/androidfw/include/androidfw/ObbFile.h
@@ -43,10 +43,6 @@
bool removeFrom(const char* filename);
bool removeFrom(int fd);
- const char* getFileName() const {
- return mFileName;
- }
-
const String8 getPackageName() const {
return mPackageName;
}
@@ -127,8 +123,6 @@
/* The encryption salt. */
unsigned char mSalt[8];
- const char* mFileName;
-
size_t mFooterStart;
bool parseObbFile(int fd);
diff --git a/native/android/storage_manager.cpp b/native/android/storage_manager.cpp
index 9e0a6eb..294ca9c 100644
--- a/native/android/storage_manager.cpp
+++ b/native/android/storage_manager.cpp
@@ -86,7 +86,7 @@
return nullptr;
}
- String16 fileName(obbFile->getFileName());
+ String16 fileName(canonicalPath);
String16 packageName(obbFile->getPackageName());
size_t length;
const unsigned char* salt = obbFile->getSalt(&length);