diff options
author | Jenkins <jenkins@review.openstack.org> | 2013-07-06 11:37:43 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2013-07-06 11:37:43 +0000 |
commit | 5be592b55c465b5e0fb5327b105bfd46e582cdab (patch) | |
tree | a76d3fe7041a03d40f64f744130e217976e43c6a /openstack | |
parent | b0d1b0c6c7ef300b16c34033bb2738e0b945686d (diff) | |
parent | f9d1a59bb826e1d5b928bc5301dc5fa40f6adc63 (diff) | |
download | oslo-5be592b55c465b5e0fb5327b105bfd46e582cdab.tar.gz oslo-5be592b55c465b5e0fb5327b105bfd46e582cdab.tar.xz oslo-5be592b55c465b5e0fb5327b105bfd46e582cdab.zip |
Merge "Handle empty arglists in Filters"
Diffstat (limited to 'openstack')
-rw-r--r-- | openstack/common/rootwrap/filters.py | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/openstack/common/rootwrap/filters.py b/openstack/common/rootwrap/filters.py index b40fdfd..660434a 100644 --- a/openstack/common/rootwrap/filters.py +++ b/openstack/common/rootwrap/filters.py @@ -47,7 +47,7 @@ class CommandFilter(object): def match(self, userargs): """Only check that the first argument (command) matches exec_path.""" - return os.path.basename(self.exec_path) == userargs[0] + return userargs and os.path.basename(self.exec_path) == userargs[0] def get_command(self, userargs, exec_dirs=[]): """Returns command to execute (with sudo -u if run_as != root).""" @@ -67,7 +67,7 @@ class RegExpFilter(CommandFilter): def match(self, userargs): # Early skip if command or number of args don't match - if (len(self.args) != len(userargs)): + if (not userargs or len(self.args) != len(userargs)): # DENY: argument numbers don't match return False # Compare each arg (anchoring pattern explicitly at end of string) @@ -101,6 +101,9 @@ class PathFilter(CommandFilter): """ def match(self, userargs): + if not userargs or len(userargs) < 2: + return False + command, arguments = userargs[0], userargs[1:] equal_args_num = len(self.args) == len(arguments) @@ -178,7 +181,7 @@ class KillFilter(CommandFilter): super(KillFilter, self).__init__("/bin/kill", *args) def match(self, userargs): - if userargs[0] != "kill": + if not userargs or userargs[0] != "kill": return False args = list(userargs) if len(args) == 3: @@ -229,13 +232,7 @@ class ReadFileFilter(CommandFilter): super(ReadFileFilter, self).__init__("/bin/cat", "root", *args) def match(self, userargs): - if userargs[0] != 'cat': - return False - if userargs[1] != self.file_path: - return False - if len(userargs) != 2: - return False - return True + return (userargs == ['cat', self.file_path]) class IpFilter(CommandFilter): |