libmodprobe: Fail when modules.dep lacks colon

The first argument in a modules.dep line must end with a colon so fail
if that condition is not met.

Test: libmodprobe_tests
Change-Id: I6f3a22758302f16b924e5a16f7af9bf35f1a56f3
This commit is contained in:
Andrew Scull 2020-10-18 17:37:27 +01:00
parent f9c36a2ca6
commit fb18f6ef05
2 changed files with 14 additions and 0 deletions

View file

@ -66,6 +66,7 @@ bool Modprobe::ParseDepCallback(const std::string& base_path,
deps.emplace_back(prefix + args[0].substr(0, pos));
} else {
LOG(ERROR) << "dependency lines must start with name followed by ':'";
return false;
}
// Remaining items are dependencies of our module

View file

@ -179,3 +179,16 @@ TEST(libmodprobe, Test) {
m.EnableBlocklist(true);
EXPECT_FALSE(m.LoadWithAliases("test4", true));
}
TEST(libmodprobe, ModuleDepLineWithoutColonIsSkipped) {
TemporaryDir dir;
auto dir_path = std::string(dir.path);
ASSERT_TRUE(android::base::WriteStringToFile(
"no_colon.ko no_colon.ko\n", dir_path + "/modules.dep", 0600, getuid(), getgid()));
kernel_cmdline = "";
test_modules = {dir_path + "/no_colon.ko"};
Modprobe m({dir.path});
EXPECT_FALSE(m.LoadWithAliases("no_colon", true));
}