From 5a4db981644ccf7a266fbb3fe41758b2a5a85eac Mon Sep 17 00:00:00 2001 From: Sam Gao Date: Mon, 6 Feb 2023 01:27:19 -0800 Subject: [PATCH] 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 Upstream from Meta. Change-Id: I4374148f466dacd62c659d3c94fd309674cb2d34 --- libs/androidfw/include/androidfw/ObbFile.h | 6 ------ native/android/storage_manager.cpp | 2 +- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/libs/androidfw/include/androidfw/ObbFile.h b/libs/androidfw/include/androidfw/ObbFile.h index 3dbf997dc367c..38ece5c1546f2 100644 --- a/libs/androidfw/include/androidfw/ObbFile.h +++ b/libs/androidfw/include/androidfw/ObbFile.h @@ -43,10 +43,6 @@ public: 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 @@ private: /* 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 9e0a6eb476d3e..294ca9cfd3b44 100644 --- a/native/android/storage_manager.cpp +++ b/native/android/storage_manager.cpp @@ -86,7 +86,7 @@ protected: return nullptr; } - String16 fileName(obbFile->getFileName()); + String16 fileName(canonicalPath); String16 packageName(obbFile->getPackageName()); size_t length; const unsigned char* salt = obbFile->getSalt(&length);