From 9a72cb720992f8cbd622f426995da905a6e40c2c Mon Sep 17 00:00:00 2001 From: Ciaran Gultnieks Date: Wed, 20 Mar 2013 09:46:30 +0000 Subject: [PATCH] Add ability to supress scanner for specific files --- docs/fdroid.texi | 8 ++++++++ fdroidserver/common.py | 25 ++++++++++++++++++++----- 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/docs/fdroid.texi b/docs/fdroid.texi index 09c57380..bd181094 100644 --- a/docs/fdroid.texi +++ b/docs/fdroid.texi @@ -754,6 +754,14 @@ If the native code is being built by other means, you can specify not required, remove the directory instead (using @code{prebuild} for example). +@item scanignore=path1;path2;... +Enables one or more files/paths to be exlcuded from the scan process. +This should only be used where there is a very good reason, and +probably accompanied by a comment explaining why it is necessary. + +When scanning, files whose relative paths start with any of the paths +given here are ignored. + @item submodules=yes Use if the project (git only) has submodules - causes git submodule init and update to be executed after the source is cloned. diff --git a/fdroidserver/common.py b/fdroidserver/common.py index 947be02e..f7344c87 100644 --- a/fdroidserver/common.py +++ b/fdroidserver/common.py @@ -1991,6 +1991,11 @@ def scan_source(build_dir, root_dir, thisbuild): 'heyzap', 'jpct-ae'] + if 'scanignore' in thisbuild: + ignore = thisbuild['scanignore'].split(';') + else: + ignore = [] + # Iterate through all files in the source code... for r,d,f in os.walk(build_dir): for curfile in f: @@ -2001,6 +2006,15 @@ def scan_source(build_dir, root_dir, thisbuild): # Path (relative) to the file... fp = os.path.join(r, curfile) + # Check if this file has been explicitly excluded from scanning... + ignorethis = False + for i in ignore: + if fp.startswith(i): + ignorethis = True + break + if ignorethis: + continue + for suspect in usual_suspects: if suspect in curfile.lower(): msg = 'Found probable non-free blob ' + fp @@ -2010,12 +2024,13 @@ def scan_source(build_dir, root_dir, thisbuild): msg = 'Found apk file, which should not be in the source - ' + fp problems.append(msg) + elif curfile.endswith('.elf'): + msg = 'Found .elf at ' + fp + problems.append(msg) + elif curfile.endswith('.so'): - if '/jni' in r: - print 'Warning: Found ELF at ' + fp - else: - msg = 'Found ELF at ' + fp - problems.append(msg) + msg = 'Found .so at ' + fp + problems.append(msg) elif curfile.endswith('.java'): for line in file(fp):