diff options
author | Andrew Scull <ascull@google.com> | 2020-10-18 17:37:27 +0100 |
---|---|---|
committer | Andrew Scull <ascull@google.com> | 2020-10-19 12:00:08 +0100 |
commit | fb18f6ef059dc2d20fa58cdcc9609bf768a11753 (patch) | |
tree | fa19dad54b3fee35a730d96aa9b6033cdc63d325 | |
parent | f9c36a2ca632fa88edba9c2c87f14f2aec1e7fd3 (diff) |
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
-rw-r--r-- | libmodprobe/libmodprobe.cpp | 1 | ||||
-rw-r--r-- | libmodprobe/libmodprobe_test.cpp | 13 |
2 files changed, 14 insertions, 0 deletions
diff --git a/libmodprobe/libmodprobe.cpp b/libmodprobe/libmodprobe.cpp index ceabf626c..b3ae93785 100644 --- a/libmodprobe/libmodprobe.cpp +++ b/libmodprobe/libmodprobe.cpp @@ -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 diff --git a/libmodprobe/libmodprobe_test.cpp b/libmodprobe/libmodprobe_test.cpp index 5919c49be..d50c10d8f 100644 --- a/libmodprobe/libmodprobe_test.cpp +++ b/libmodprobe/libmodprobe_test.cpp @@ -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)); +} |