diff options
author | 2024-12-18 00:40:20 +0000 | |
---|---|---|
committer | 2024-12-18 00:50:53 +0000 | |
commit | 0d8e27302bc8204bfa982874197aa1838cad4648 (patch) | |
tree | 458d5c55a83e88fd626db309483fc4c11e6e38a6 | |
parent | 06e3c3fab8678d989512eb94879d4b8740c2e89a (diff) |
libinput: avoid null segmentation fault
readCString may return nullptr, and it's deprecated
and old anyway.
Please also consider converting this code to use
AIDL-defined parcelables. go/aidl-it!
Bug: 301519740
Test: w/ fuzzer
Change-Id: I76050c3b7fe40964fd751e678688d2e1d97b9479
-rw-r--r-- | libs/input/KeyCharacterMap.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/libs/input/KeyCharacterMap.cpp b/libs/input/KeyCharacterMap.cpp index 90d29dd190..d2c49b113d 100644 --- a/libs/input/KeyCharacterMap.cpp +++ b/libs/input/KeyCharacterMap.cpp @@ -615,7 +615,7 @@ std::unique_ptr<KeyCharacterMap> KeyCharacterMap::readFromParcel(Parcel* parcel) ALOGE("%s: Null parcel", __func__); return nullptr; } - std::string loadFileName = parcel->readCString(); + std::string loadFileName = parcel->readString8().c_str(); std::unique_ptr<KeyCharacterMap> map = std::make_unique<KeyCharacterMap>(KeyCharacterMap(loadFileName)); map->mType = static_cast<KeyCharacterMap::KeyboardType>(parcel->readInt32()); @@ -704,7 +704,7 @@ void KeyCharacterMap::writeToParcel(Parcel* parcel) const { ALOGE("%s: Null parcel", __func__); return; } - parcel->writeCString(mLoadFileName.c_str()); + parcel->writeString8(String8(mLoadFileName.c_str())); parcel->writeInt32(static_cast<int32_t>(mType)); parcel->writeBool(mLayoutOverlayApplied); |