-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathusermode-helper_test.cc
104 lines (88 loc) · 4.05 KB
/
usermode-helper_test.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
// Copyright 2018 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "init/usermode-helper.h"
#include <gtest/gtest.h>
#include <initializer_list>
#include <vector>
namespace {
// Convenience function.
bool ValidateProgramArgs(std::initializer_list<const char*> argv) {
std::vector<const char*> vargv(argv);
return usermode_helper::ValidateProgramArgs(argv.size(), vargv.data());
}
} // namespace
TEST(ValidateProgramArgs, UnknownPrograms) {
EXPECT_FALSE(ValidateProgramArgs({"/sbin/crash_reporter "}));
EXPECT_FALSE(ValidateProgramArgs({"crash_reporter"}));
EXPECT_FALSE(ValidateProgramArgs({"/bin/crash_reporter"}));
}
TEST(ValidateProgramArgs, GoodCrashReporter) {
EXPECT_TRUE(ValidateProgramArgs({"/sbin/crash_reporter", "--user=foo"}));
EXPECT_TRUE(ValidateProgramArgs(
{"/sbin/crash_reporter", "--early", "--log_to_stderr", "--user=foo"}));
EXPECT_TRUE(ValidateProgramArgs(
{"/sbin/crash_reporter", "--user=foo", "--core2md_failure"}));
EXPECT_TRUE(ValidateProgramArgs(
{"/sbin/crash_reporter", "--user=foo", "--directory_failure"}));
EXPECT_TRUE(ValidateProgramArgs(
{"/sbin/crash_reporter", "--user=foo", "--crash_test"}));
}
TEST(ValidateProgramArgs, BadCrashReporter) {
EXPECT_FALSE(ValidateProgramArgs({"/sbin/crash_reporter"}));
EXPECT_FALSE(ValidateProgramArgs({"/sbin/crash_reporter", "--init"}));
EXPECT_FALSE(ValidateProgramArgs(
{"/sbin/crash_reporter", "--user=foo", "--filter_in=blah"}));
EXPECT_FALSE(ValidateProgramArgs({"/sbin/crash_reporter", "--user=foo",
"--filter_in=blah", "--core2md_failure"}));
}
TEST(ValidateProgramArgs, GoodModprobe) {
EXPECT_TRUE(ValidateProgramArgs({"/sbin/modprobe", "-q", "--", "mod"}));
}
TEST(ValidateProgramArgs, BadModprobe) {
EXPECT_FALSE(ValidateProgramArgs({"/sbin/modprobe"}));
EXPECT_FALSE(ValidateProgramArgs({"/sbin/modprobe", "mod"}));
EXPECT_FALSE(ValidateProgramArgs({"/sbin/modprobe", "-q"}));
EXPECT_FALSE(ValidateProgramArgs({"/sbin/modprobe", "-q", "mod"}));
EXPECT_FALSE(ValidateProgramArgs({"/sbin/modprobe", "-q", "--"}));
EXPECT_FALSE(ValidateProgramArgs({"/sbin/modprobe", "--"}));
EXPECT_FALSE(ValidateProgramArgs({"/sbin/modprobe", "--", "mod"}));
EXPECT_FALSE(ValidateProgramArgs({"/sbin/modprobe", "-a", "mod1", "mod2"}));
EXPECT_FALSE(ValidateProgramArgs({"/sbin/modprobe", "-r", "mod"}));
}
TEST(ValidateProgramArgs, GoodPoweroff) {
EXPECT_TRUE(ValidateProgramArgs({"/sbin/poweroff"}));
}
TEST(ValidateProgramArgs, BadPoweroff) {
EXPECT_FALSE(ValidateProgramArgs({"/sbin/poweroff", "-f"}));
}
TEST(ValidateProgramArgs, GoodReboot) {
EXPECT_TRUE(ValidateProgramArgs({"/sbin/reboot"}));
}
TEST(ValidateProgramArgs, BadReboot) {
EXPECT_FALSE(ValidateProgramArgs({"/sbin/reboot", "-f"}));
}
TEST(ValidateProgramArgs, GoodRequestKey) {
EXPECT_TRUE(
ValidateProgramArgs({"/sbin/request-key", "<op>", "<key>", "<uid>",
"<gid>", "<keyring>", "<keyring>", "<keyring>"}));
}
TEST(ValidateProgramArgs, RequestKey) {
EXPECT_FALSE(
ValidateProgramArgs({"/sbin/request-key", "<op>", "<key>", "<uid>",
"<gid>", "<keyring>", "<keyring>", "--option"}));
EXPECT_FALSE(
ValidateProgramArgs({"/sbin/request-key", "<op>", "<key>", "<uid>",
"<gid>", "<keyring>", "<keyring>"}));
EXPECT_FALSE(ValidateProgramArgs({"/sbin/request-key", "<op>", "<key>",
"<uid>", "<gid>", "<keyring>", "<keyring>",
"<keyring>", "toomany"}));
}
TEST(ValidateProgramArgs, BridgeStp) {
EXPECT_TRUE(ValidateProgramArgs({"/sbin/bridge-stp", "br-lan", "start"}));
EXPECT_TRUE(ValidateProgramArgs({"/sbin/bridge-stp", "br-lan", "stop"}));
EXPECT_FALSE(ValidateProgramArgs({"/sbin/bridge-stp", "br-lan"}));
EXPECT_FALSE(
ValidateProgramArgs({"/sbin/bridge-stp", "br-lan", "start", "toomany"}));
EXPECT_FALSE(ValidateProgramArgs({"/sbin/bridge-stp", "start", "br-lan"}));
}