Blob Blame History Raw
From 9a168f86b5f292c539d7fd143e06272ddae97d68 Mon Sep 17 00:00:00 2001
From: Alec Leamas <leamas.alec@gmail.com>
Date: Fri, 8 Feb 2013 11:39:09 +0100
Subject: [PATCH 2/7] Handle '+' characters i package name (BZ908830)

Caused a crash when a package named *c++* was fed to a regex which
tried to interpret the '+' characters. No other regex reserved
chars [\^$.|?*() should realistically be in package names(?). There
may be other places affected by this, though.

Conflicts:
	plugins/generic.py
---
 plugins/generic.py | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/plugins/generic.py b/plugins/generic.py
index f2d8235..21ccbb0 100644
--- a/plugins/generic.py
+++ b/plugins/generic.py
@@ -226,9 +226,14 @@ class CheckCleanBuildroot(GenericCheckBase):
 
     def run(self):
         has_clean = False
-        regex = 'rm\s+\-[rf][rf]\s+(%{buildroot}|$RPM_BUILD_ROOT)'
-        regex = rpm.expandMacro(regex)
+        regex = r'rm\s+\-[rf][rf]\s+(@buildroot@|$RPM_BUILD_ROOT)'
+        buildroot = rpm.expandMacro('%{buildroot}')
+        # BZ 908830: handle '+' in package name.
+        buildroot = buildroot.replace('+', r'\+')
+        regex = regex.replace('@buildroot@', buildroot)
         install_sec = self.spec.get_section('%install', raw=True)
+        self.log.debug('regex: ' + regex)
+        self.log.debug('install_sec: ' + install_sec)
         has_clean = install_sec and re.search(regex, install_sec)
         if self.flags['EPEL5']:
             self.text = 'EPEL5: Package does run rm -rf %{buildroot}' \
-- 
1.8.1