Skip to content

Commit 8681f7e

Browse files
committed
ueventd: Fix wrong argument index in devpath comparison
args[2](user name to run as) is used instead of args[1](devpath). Test: atest CtsInitTestCases Signed-off-by: Suchang Woo <[email protected]> Change-Id: Id271755993d55e332bad54d0414e2232071e5e8e
1 parent 767f264 commit 8681f7e

File tree

2 files changed

+13
-4
lines changed

2 files changed

+13
-4
lines changed

init/ueventd_parser.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,10 +106,10 @@ Result<void> ParseExternalFirmwareHandlerLine(
106106
}
107107

108108
if (std::find_if(external_firmware_handlers->begin(), external_firmware_handlers->end(),
109-
[&args](const auto& other) { return other.devpath == args[2]; }) !=
109+
[&args](const auto& other) { return other.devpath == args[1]; }) !=
110110
external_firmware_handlers->end()) {
111111
return Error() << "found a previous external_firmware_handler with the same devpath, '"
112-
<< args[2] << "'";
112+
<< args[1] << "'";
113113
}
114114

115115
passwd* pwd = getpwnam(args[2].c_str());

init/ueventd_parser_test.cpp

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,13 @@ void TestSysfsPermissions(const SysfsPermissions& expected, const SysfsPermissio
4545
EXPECT_EQ(expected.attribute_, test.attribute_);
4646
}
4747

48+
void TestExternalFirmwareHandler(const ExternalFirmwareHandler& expected,
49+
const ExternalFirmwareHandler& test) {
50+
EXPECT_EQ(expected.devpath, test.devpath) << expected.devpath;
51+
EXPECT_EQ(expected.uid, test.uid) << expected.uid;
52+
EXPECT_EQ(expected.handler_path, test.handler_path) << expected.handler_path;
53+
}
54+
4855
template <typename T, typename F>
4956
void TestVector(const T& expected, const T& test, F function) {
5057
ASSERT_EQ(expected.size(), test.size());
@@ -67,6 +74,8 @@ void TestUeventdFile(const std::string& content, const UeventdConfiguration& exp
6774
TestVector(expected.sysfs_permissions, result.sysfs_permissions, TestSysfsPermissions);
6875
TestVector(expected.dev_permissions, result.dev_permissions, TestPermissions);
6976
EXPECT_EQ(expected.firmware_directories, result.firmware_directories);
77+
TestVector(expected.external_firmware_handlers, result.external_firmware_handlers,
78+
TestExternalFirmwareHandler);
7079
}
7180

7281
TEST(ueventd_parser, EmptyFile) {
@@ -144,7 +153,7 @@ TEST(ueventd_parser, ExternalFirmwareHandlers) {
144153
auto ueventd_file = R"(
145154
external_firmware_handler devpath root handler_path
146155
external_firmware_handler /devices/path/firmware/something001.bin system /vendor/bin/firmware_handler.sh
147-
external_firmware_handler /devices/path/firmware/something001.bin radio "/vendor/bin/firmware_handler.sh --has --arguments"
156+
external_firmware_handler /devices/path/firmware/something002.bin radio "/vendor/bin/firmware_handler.sh --has --arguments"
148157
)";
149158

150159
auto external_firmware_handlers = std::vector<ExternalFirmwareHandler>{
@@ -159,7 +168,7 @@ external_firmware_handler /devices/path/firmware/something001.bin radio "/vendor
159168
"/vendor/bin/firmware_handler.sh",
160169
},
161170
{
162-
"/devices/path/firmware/something001.bin",
171+
"/devices/path/firmware/something002.bin",
163172
AID_RADIO,
164173
"/vendor/bin/firmware_handler.sh --has --arguments",
165174
},

0 commit comments

Comments
 (0)