diff options
author | Bryn M. Reeves <bmr@redhat.com> | 2013-10-06 15:01:23 +0100 |
---|---|---|
committer | Bryn M. Reeves <bmr@redhat.com> | 2013-10-06 15:01:23 +0100 |
commit | fc82baea4451a9cb3a1a64f792069a9306208b4e (patch) | |
tree | 57538e78caec55ba6c629e3f878528fec9cca596 | |
parent | be8c1fd11862cf84189eebd42cdd5fd9cc0743f4 (diff) | |
download | sos-fc82baea4451a9cb3a1a64f792069a9306208b4e.tar.gz |
Fix exception in command output substitution
If an attempt is made to apply command output substitution via
Plugin.do_cmd_output_sub() and no output has been collected (i.e.
called['file'] == None) an exception is thrown by os.path.join().
The exception is also not logged properly due to an attempt in
the do_cmd_output_sub() exception handler to access an unbound
local variable (path - the exception occurs before it is
assigned).
Fix both of these by checking for an empty file entry and avoiding
access to the path variable from the exception handler.
Signed-off-by: Bryn M. Reeves <bmr@redhat.com>
-rw-r--r-- | sos/plugins/__init__.py | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/sos/plugins/__init__.py b/sos/plugins/__init__.py index 2eb160e1..cbb8e5ae 100644 --- a/sos/plugins/__init__.py +++ b/sos/plugins/__init__.py @@ -180,6 +180,9 @@ class Plugin(object): try: for called in self.executed_commands: + # was anything collected? + if called['file'] == None: + continue if fnmatch.fnmatch(called['exe'], globstr): path = os.path.join(self.commons['cmddir'], called['file']) self.soslog.debug("applying substitution to %s" % path) @@ -192,7 +195,7 @@ class Plugin(object): replacements = 0 except Exception, e: msg = 'regex substitution failed for %s in plugin %s with: "%s"' - self.soslog.error(msg % (path, self.name(), e)) + self.soslog.error(msg % (called['exe'], self.name(), e)) replacements = 0 if self.commons['cmdlineopts'].profiler: time_passed = time() - start_time |