mirror of
https://github.com/f-droid/fdroidserver.git
synced 2025-09-13 22:42:29 +03:00
update: do not die when androguard files to extract icon
https://jenkins.debian.net/job/reproducible_fdroid_test/422 https://jenkins.debian.net/job/reproducible_fdroid_test/423 ``` Traceback (most recent call last): File "../fdroid", line 22, in <module> fdroidserver.__main__.main() File "/var/lib/jenkins/userContent/reproducible/reproducible_fdroid_build_apps/fdroidserver/__main__.py", line 227, in main raise e File "/var/lib/jenkins/userContent/reproducible/reproducible_fdroid_build_apps/fdroidserver/__main__.py", line 208, in main mod.main() File "/var/lib/jenkins/userContent/reproducible/reproducible_fdroid_build_apps/fdroidserver/update.py", line 2316, in main apks, cachechanged = process_apks(apkcache, repodirs[0], knownapks, options.use_date_from_apk) File "/var/lib/jenkins/userContent/reproducible/reproducible_fdroid_build_apps/fdroidserver/update.py", line 1746, in process_apks use_date_from_apk, ada, True) File "/var/lib/jenkins/userContent/reproducible/reproducible_fdroid_build_apps/fdroidserver/update.py", line 1619, in process_apk apk = scan_apk(apkfile) File "/var/lib/jenkins/userContent/reproducible/reproducible_fdroid_build_apps/fdroidserver/update.py", line 1385, in scan_apk scan_apk_androguard(apk, apk_file) File "/var/lib/jenkins/userContent/reproducible/reproducible_fdroid_build_apps/fdroidserver/update.py", line 1527, in scan_apk_androguard resource_id = arsc.get_id(apk['packageName'], icon_id) File "/usr/lib/python3/dist-packages/androguard/core/bytecodes/axml/__init__.py", line 1668, in get_id self._analyse() File "/usr/lib/python3/dist-packages/androguard/core/bytecodes/axml/__init__.py", line 1321, in _analyse ate = self.packages[package_name][nb + 3 + nb_i] IndexError: list index out of range ```
This commit is contained in:
parent
50f0534d87
commit
8a9852209b
1 changed files with 13 additions and 10 deletions
|
@ -1395,17 +1395,17 @@ def scan_apk(apk_file):
|
|||
logging.debug('Getting signature of {0}'.format(os.path.basename(apk_file)))
|
||||
apk['sig'] = getsig(apk_file)
|
||||
if not apk['sig']:
|
||||
raise BuildException("Failed to get apk signature")
|
||||
raise BuildException(_("Failed to get APK signing key fingerprint"))
|
||||
apk['signer'] = common.apk_signer_fingerprint(os.path.join(os.getcwd(),
|
||||
apk_file))
|
||||
if not apk.get('signer'):
|
||||
raise BuildException("Failed to get apk signing key fingerprint")
|
||||
raise BuildException(_("Failed to get APK signing key fingerprint"))
|
||||
|
||||
# Get size of the APK
|
||||
apk['size'] = os.path.getsize(apk_file)
|
||||
|
||||
if 'minSdkVersion' not in apk:
|
||||
logging.warning("No SDK version information found in {0}".format(apk_file))
|
||||
logging.warning(_("No minimum SDK version found in {0}, using default (3).").format(apk_file))
|
||||
apk['minSdkVersion'] = 3 # aapt defaults to 3 as the min
|
||||
|
||||
# Check for known vulnerabilities
|
||||
|
@ -1524,13 +1524,16 @@ def scan_apk_androguard(apk, apkfile):
|
|||
icon_id_str = apkobject.get_element("application", "icon")
|
||||
if icon_id_str:
|
||||
icon_id = int(icon_id_str.replace("@", "0x"), 16)
|
||||
resource_id = arsc.get_id(apk['packageName'], icon_id)
|
||||
if resource_id:
|
||||
icon_name = arsc.get_id(apk['packageName'], icon_id)[1]
|
||||
else:
|
||||
# don't use 'anydpi' aka 0xFFFE aka 65534 since it is XML
|
||||
icon_name = os.path.splitext(os.path.basename(apkobject.get_app_icon(max_dpi=65534 - 1)))[0]
|
||||
apk['icons_src'] = _get_apk_icons_src(apkfile, icon_name)
|
||||
try:
|
||||
resource_id = arsc.get_id(apk['packageName'], icon_id)
|
||||
if resource_id:
|
||||
icon_name = arsc.get_id(apk['packageName'], icon_id)[1]
|
||||
else:
|
||||
# don't use 'anydpi' aka 0xFFFE aka 65534 since it is XML
|
||||
icon_name = os.path.splitext(os.path.basename(apkobject.get_app_icon(max_dpi=65534 - 1)))[0]
|
||||
apk['icons_src'] = _get_apk_icons_src(apkfile, icon_name)
|
||||
except Exception as e:
|
||||
logging.error("Cannot fetch icon from %s: %s" % (apkfile, str(e)))
|
||||
|
||||
arch_re = re.compile("^lib/(.*)/.*$")
|
||||
arch = set([arch_re.match(file).group(1) for file in apkobject.get_files() if arch_re.match(file)])
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue