aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBryn M. Reeves <bmr@redhat.com>2013-10-06 15:01:23 +0100
committerBryn M. Reeves <bmr@redhat.com>2013-10-06 15:01:23 +0100
commitfc82baea4451a9cb3a1a64f792069a9306208b4e (patch)
tree57538e78caec55ba6c629e3f878528fec9cca596
parentbe8c1fd11862cf84189eebd42cdd5fd9cc0743f4 (diff)
downloadsos-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__.py5
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