1
0
mirror of https://gitlab.com/fdroid/fdroidserver.git synced 2024-07-07 09:50:07 +02:00

fix scan_apk_androguard when parsing versionName without a dot (e.g. 5)

fixes de35f1b05b:

Traceback (most recent call last):
  File "/home/hans/code/fdroid/server/fdroid", line 164, in <module>
    main()
  File "/home/hans/code/fdroid/server/fdroid", line 138, in main
    mod.main()
  File "/export/share/code/fdroid/server/fdroidserver/update.py", line 1932, in main
    apks, cachechanged = process_apks(apkcache, repodirs[0], knownapks, options.use_date_from_apk)
  File "/export/share/code/fdroid/server/fdroidserver/update.py", line 1459, in process_apks
    use_date_from_apk, ada, True)
  File "/export/share/code/fdroid/server/fdroidserver/update.py", line 1332, in process_apk
    apk = scan_apk(apkfile)
  File "/export/share/code/fdroid/server/fdroidserver/update.py", line 1051, in scan_apk
    scan_apk_androguard(apk, apk_file)
  File "/export/share/code/fdroid/server/fdroidserver/update.py", line 1220, in scan_apk_androguard
    res_id = arsc.get_id(apk['packageName'], res_id)[1]
TypeError: 'NoneType' object is not subscriptable

For example https://f-droid.org/archive/com.abitsinc.andr_5.apk:
$ aapt dump badging archive/com.abitsinc.andr_5.apk |head -1
package: name='com.abitsinc.andr' versionCode='5' versionName='5' platformBuildVersionName='2.3.3'
This commit is contained in:
Hans-Christoph Steiner 2018-04-18 12:31:48 +02:00
parent 6cc26ad8c8
commit afe0c6a167

View File

@ -1213,12 +1213,13 @@ def scan_apk_androguard(apk, apkfile):
versionName = apkobject.get_androidversion_name()
if versionName:
apk['versionName'] = versionName
try: # can be a literal value or a resId
res_id = int(versionName.replace("@", "0x"), 16)
res_id = arsc.get_id(apk['packageName'], res_id)[1]
apk['versionName'] = arsc.get_string(apk['packageName'], res_id)[1]
except ValueError:
pass
if versionName[0] == '@':
try: # can be a literal value or a resId
res_id = int(versionName.replace("@", "0x"), 16)
res_id = arsc.get_id(apk['packageName'], res_id)[1]
apk['versionName'] = arsc.get_string(apk['packageName'], res_id)[1]
except ValueError:
pass
if apkobject.get_max_sdk_version() is not None:
apk['maxSdkVersion'] = apkobject.get_max_sdk_version()