From 06fb855a2758bf2add10ffd49fb3da2370bebac6 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 22 Feb 2018 21:15:41 +0100 Subject: [PATCH] common: tighten up regexs when searching for version name/code and appid This should have less of a change of matching bad things. thanks to @stf for the report. I ran tests comparing the original vs these new patterns, and it was a 100% match. So at least it didn't make things worse. Here's the test script: #!/usr/bin/env python3 import os import re old_vcsearch_g = re.compile(r'''.*[Vv]ersionCode[ =]+["']*([0-9]+)["']*''').search old_vnsearch_g = re.compile(r'.*[Vv]ersionName *=* *(["\'])((?:(?=(\\?))\3.)*?)\1.*').search old_psearch_g = re.compile(r'.*(packageName|applicationId) *=* *["\']([^"]+)["\'].*').search new_vcsearch_g = re.compile(r'''.*[Vv]ersionCode\s*=?\s*["']*([0-9]+)["']*''').search new_vnsearch_g = re.compile(r'''.*[Vv]ersionName\s*=?\s*(["'])((?:(?=(\\?))\3.)*?)\1.*''').search new_psearch_g = re.compile(r'''.*(packageName|applicationId)\s*=*\s*["']([^"']+)["'].*''').search old = re.compile(r'.*(packageName|applicationId) *=* *["\']([^"]+)["\'].*').search new = re.compile(r'''.*(packageName|applicationId)\s*=*\s*["']([^"']+)["'].*''').search for root, dirs, files in os.walk('build'): for f in files: if f.endswith('.gradle'): with open(os.path.join(root, f)) as fp: for line in fp: for old, new in ((old_vcsearch_g, new_vcsearch_g), (old_vnsearch_g, new_vnsearch_g), (old_psearch_g, new_psearch_g)): found_old = old(line) found_new = new(line) oldresult = None newresult = None if found_old or found_new: if found_old: oldresult = found_old.groups() #print('OLD', oldresult) if found_new: newresult = found_new.groups() #print('NEW', newresult) if oldresult != newresult: print('--------------------------------') print(f, oldresult, newresult) --- fdroidserver/common.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/fdroidserver/common.py b/fdroidserver/common.py index b5ff274c..b0af59fc 100644 --- a/fdroidserver/common.py +++ b/fdroidserver/common.py @@ -1320,9 +1320,9 @@ def remove_debuggable_flags(root_dir): os.path.join(root, 'AndroidManifest.xml')) -vcsearch_g = re.compile(r'''.*[Vv]ersionCode[ =]+["']*([0-9]+)["']*''').search -vnsearch_g = re.compile(r'.*[Vv]ersionName *=* *(["\'])((?:(?=(\\?))\3.)*?)\1.*').search -psearch_g = re.compile(r'.*(packageName|applicationId) *=* *["\']([^"]+)["\'].*').search +vcsearch_g = re.compile(r'''.*[Vv]ersionCode\s*=?\s*["']*([0-9]+)["']*''').search +vnsearch_g = re.compile(r'''.*[Vv]ersionName\s*=?\s*(["'])((?:(?=(\\?))\3.)*?)\1.*''').search +psearch_g = re.compile(r'''.*(packageName|applicationId)\s*=*\s*["']([^"']+)["'].*''').search def app_matches_packagename(app, package): -- 2.30.2