summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Vaibhav Devmurari <vdevmurari@google.com> 2022-12-22 18:23:21 +0000
committer Vaibhav Devmurari <vdevmurari@google.com> 2023-01-02 13:14:00 +0000
commit990ff7ba368f3d24ba6ac25321e326c82f13d620 (patch)
tree329959cd59a2921e132945d20fdd28eb6a67ddeb
parent6b65c0c7abd78b10583a27b80734fb672dea66aa (diff)
Don't crash on invalid HID country code
Apple magic keyboard sends invalid hid country code 166 which is not supported according to HID standards. Instead of throwing fatal exception, assume any country code value out of the standard range as invalid. Test: manual testing. TODO: implement sysfs based test cases Bug: 262703228 Change-Id: I7821473c31b08d23ebf91385fbe12dc9f758a472
-rw-r--r--services/inputflinger/reader/EventHub.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/services/inputflinger/reader/EventHub.cpp b/services/inputflinger/reader/EventHub.cpp
index e26bc8c6dc..e9fa599b33 100644
--- a/services/inputflinger/reader/EventHub.cpp
+++ b/services/inputflinger/reader/EventHub.cpp
@@ -319,10 +319,11 @@ static InputDeviceCountryCode readCountryCodeLocked(const std::filesystem::path&
std::string str;
if (base::ReadFileToString(sysfsRootPath / "country", &str)) {
hidCountryCode = std::stoi(str, nullptr, 16);
- LOG_ALWAYS_FATAL_IF(hidCountryCode > 35 || hidCountryCode < 0,
- "HID country code should be in range [0, 35]. Found country code "
- "to be %d",
- hidCountryCode);
+ if (hidCountryCode > 35 || hidCountryCode < 0) {
+ ALOGE("HID country code should be in range [0, 35], but for sysfs path %s it was %d",
+ sysfsRootPath.c_str(), hidCountryCode);
+ return InputDeviceCountryCode::INVALID;
+ }
}
return static_cast<InputDeviceCountryCode>(hidCountryCode);