Blob Blame History Raw
From e60ae9f56c5309f0424c9d47eb97b5b5cc1eec97 Mon Sep 17 00:00:00 2001
From: Stanislav Ochotnicky <sochotnicky@redhat.com>
Date: Tue, 28 May 2013 14:45:38 +0200
Subject: [PATCH] Check if spec.get_section returned None before using it

Depending on the check in question it either fails when given section is
missing or possibly even succeeds.

Non-existing %install section is something which should never happen really but
apparently there are people who manage...So let's not crash

See https://bugzilla.redhat.com/show_bug.cgi?id=967571
---
 plugins/generic.py | 9 ++++++++-
 plugins/java.py    | 4 ++--
 2 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/plugins/generic.py b/plugins/generic.py
index 5f5b867..289b677 100644
--- a/plugins/generic.py
+++ b/plugins/generic.py
@@ -232,6 +232,9 @@ class CheckCleanBuildroot(GenericCheckBase):
         buildroot = buildroot.replace('+', r'\+')
         regex = regex.replace('@buildroot@', buildroot)
         install_sec = self.spec.get_section('%install', raw=True)
+        if not install_sec:
+            self.set_passed(self.NA)
+            return
         self.log.debug('regex: ' + regex)
         self.log.debug('install_sec: ' + install_sec)
         has_clean = install_sec and re.search(regex, install_sec)
@@ -782,7 +785,7 @@ class CheckMakeinstall(GenericCheckBase):
 
     def run_on_applicable(self):
         install = self.spec.get_section('%install', raw=True)
-        if '%makeinstall' in install:
+        if install and '%makeinstall' in install:
             self.set_passed(self.PENDING,
                             '%makeinstall used in %install section')
         else:
@@ -1330,6 +1333,10 @@ class CheckUpdateDesktopDatabase(GenericCheckBase):
         using = []
         failed = False
         install = self.spec.get_section('%install', raw=True)
+        if not install:
+            self.set_passed(self.NA)
+            return
+
         for pkg in self.spec.packages:
             if self.rpms.find('*.desktop', pkg):
                 using.append(pkg)
diff --git a/plugins/java.py b/plugins/java.py
index 142bfb5..92f9566 100644
--- a/plugins/java.py
+++ b/plugins/java.py
@@ -390,8 +390,8 @@ class CheckTestSkip(JavaCheckBase):
         xmvn_skip_regex = re.compile(r'mvn-build\s+.*(-f|--force|'
                                       '--skip-tests).*')
         build_section = self.spec.get_section('%build', raw=True)
-        if (skip_regex.search(build_section) or
-            xmvn_skip_regex.search(build_section)):
+        if build_section and (skip_regex.search(build_section) or
+                              xmvn_skip_regex.search(build_section)):
             self.set_passed(self.PENDING, """Tests seem to be skipped. Verify
         there is a commment giving a reason for this""")
         else:
-- 
1.8.1.4