Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:42.3:Staging:E
rpmlint
binaryinfo-speedup.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File binaryinfo-speedup.diff of Package rpmlint
From 4d995b87763076cc2aca25b7836e106708bd926f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Br=C3=BCns?= <stefan.bruens@rwth-aachen.de> Date: Fri, 23 Oct 2015 23:43:16 +0200 Subject: [PATCH] Skip checks for problematic function calls if common prefix does not match The regexes have a common prefix. If the prefix does not match, none of the regexes will match, continue with the next line. --- BinariesCheck.py | 53 ++++++++++++++++++++++++++++++++--------------------- 1 file changed, 32 insertions(+), 21 deletions(-) Index: rpmlint-rpmlint-1.8/BinariesCheck.py =================================================================== --- rpmlint-rpmlint-1.8.orig/BinariesCheck.py +++ rpmlint-rpmlint-1.8/BinariesCheck.py @@ -28,14 +28,14 @@ DEFAULT_SYSTEM_LIB_PATHS = ( def create_regexp_call(call): if type(call) == type([]): call = '(?:' + '|'.join(call) + ')' - r = "\s+FUNC\s+.*?\s+(%s(?:@GLIBC\S+)?)(?:\s|$)" % call + r = ".*?\s+(%s(?:@GLIBC\S+)?)(?:\s|$)" % call return re.compile(r) def create_nonlibc_regexp_call(call): if type(call) == type([]): call = '(?:' + '|'.join(call) + ')' - r = "\s+FUNC\s+.*?\s+UND\s+(%s)\s?.*$" % call + r = ".*?\s+UND\s+(%s)\s?.*$" % call return re.compile(r) @@ -51,6 +51,7 @@ class BinaryInfo: stack_exec_regex = re.compile('^..E$') undef_regex = re.compile('^undefined symbol:\s+(\S+)') unused_regex = re.compile('^\s+(\S+)') + call_regex = re.compile('\s0\s+FUNC\s+(.*)') exit_call_regex = create_regexp_call('_?exit') fork_call_regex = create_regexp_call('fork') debuginfo_regex=re.compile('^\s+\[\s*\d+\]\s+\.debug_.*\s+') @@ -109,25 +110,8 @@ class BinaryInfo: cmd.append(path) res = Pkg.getstatusoutput(cmd) if not res[0]: - for l in res[1].splitlines(): - if BinaryInfo.mktemp_call_regex.search(l): - self.mktemp = True - - if BinaryInfo.setgid_call_regex.search(l): - self.setgid = True - - if BinaryInfo.setuid_call_regex.search(l): - self.setuid = True - - if BinaryInfo.setgroups_call_regex.search(l): - self.setgroups = True - - if BinaryInfo.chdir_call_regex.search(l): - self.chdir = True - - if BinaryInfo.chroot_call_regex.search(l): - self.chroot = True - + lines = res[1].splitlines() + for l in lines: r = BinaryInfo.needed_regex.search(l) if r: self.needed.append(r.group(1)) @@ -160,6 +144,41 @@ class BinaryInfo: self.exec_stack = True continue + if BinaryInfo.debuginfo_regex.search(l): + self.debuginfo=1 + continue + + if BinaryInfo.symtab_regex.search(l): + self.symtab=1 + continue + + if l.startswith("Symbol table"): + break + + for l in lines: + r = BinaryInfo.call_regex.search(l) + if not r: + continue + l = r.group(1) + + if BinaryInfo.mktemp_call_regex.search(l): + self.mktemp = True + + if BinaryInfo.setgid_call_regex.search(l): + self.setgid = True + + if BinaryInfo.setuid_call_regex.search(l): + self.setuid = True + + if BinaryInfo.setgroups_call_regex.search(l): + self.setgroups = True + + if BinaryInfo.chdir_call_regex.search(l): + self.chdir = True + + if BinaryInfo.chroot_call_regex.search(l): + self.chroot = True + if BinaryInfo.forbidden_functions: for r_name, func in BinaryInfo.forbidden_functions.items(): ret = func['f_regex'].search(l) @@ -181,14 +200,6 @@ class BinaryInfo: fork_called = True continue - if BinaryInfo.debuginfo_regex.search(l): - self.debuginfo=1 - continue - - if BinaryInfo.symtab_regex.search(l): - self.symtab=1 - continue - # check if we don't have a string that will automatically # waive the presence of a forbidden call if self.forbidden_calls:
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor