summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Steven Moreland <smoreland@google.com> 2024-12-18 00:40:20 +0000
committer Steven Moreland <smoreland@google.com> 2024-12-18 00:50:53 +0000
commit0d8e27302bc8204bfa982874197aa1838cad4648 (patch)
tree458d5c55a83e88fd626db309483fc4c11e6e38a6
parent06e3c3fab8678d989512eb94879d4b8740c2e89a (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.cpp4
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);