Skip to content

fix bad parsing of maxSdkVersion as a @string resource

Hans-Christoph Steiner requested to merge eighthave/fdroidserver:master into master

In the migration to androguard, we discovered a single app that used android:maxSdkVersion="@string/max_version". aapt just ignores that value entirely, androguard was dutifully returning the resId, which is not a value integer. This makes fdroid update also ignore that.

admin#65 (comment 70428602)

Here's the stacktrace from fdroidclient:

04-26 11:43:59.628 23373 23985 E UpdateService: Error updating repository https://f-droid.org/repo
04-26 11:43:59.628 23373 23985 E UpdateService: org.fdroid.fdroid.RepoUpdater$UpdateException: Error getting index file
04-26 11:43:59.628 23373 23985 E UpdateService: 	at org.fdroid.fdroid.IndexV1Updater.update(IndexV1Updater.java:142)
04-26 11:43:59.628 23373 23985 E UpdateService: 	at org.fdroid.fdroid.UpdateService.onHandleIntent(UpdateService.java:397)
04-26 11:43:59.628 23373 23985 E UpdateService: 	at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:68)
04-26 11:43:59.628 23373 23985 E UpdateService: 	at android.os.Handler.dispatchMessage(Handler.java:102)
04-26 11:43:59.628 23373 23985 E UpdateService: 	at android.os.Looper.loop(Looper.java:154)
04-26 11:43:59.628 23373 23985 E UpdateService: 	at android.os.HandlerThread.run(HandlerThread.java:61)
04-26 11:43:59.628 23373 23985 E UpdateService: Caused by: com.fasterxml.jackson.databind.exc.InvalidFormatException: Can not deserialize value of type int from String "@7F050022": not a valid Integer value
04-26 11:43:59.628 23373 23985 E UpdateService:  at [Source: org.fdroid.fdroid.ProgressBufferedInputStream@21b04a3; line: 1, column: 5551772] (through reference chain: java.util.HashMap["souch.smsbypass"]->java.util.ArrayList[0]->org.fdroid.fdroid.data.Apk["maxSdkVersion"])
04-26 11:43:59.628 23373 23985 E UpdateService: 	at com.fasterxml.jackson.databind.DeserializationContext.weirdStringException(DeserializationContext.java:1410)
04-26 11:43:59.628 23373 23985 E UpdateService: 	at com.fasterxml.jackson.databind.DeserializationContext.handleWeirdStringValue(DeserializationContext.java:926)
04-26 11:43:59.628 23373 23985 E UpdateService: 	at com.fasterxml.jackson.databind.deser.std.StdDeserializer._parseInteger(StdDeserializer.java:451)
04-26 11:43:59.628 23373 23985 E UpdateService: 	at com.fasterxml.jackson.databind.deser.std.NumberDeserializers$IntegerDeserializer.deserialize(NumberDeserializers.java:308)
04-26 11:43:59.628 23373 23985 E UpdateService: 	at com.fasterxml.jackson.databind.deser.std.NumberDeserializers$IntegerDeserializer.deserialize(NumberDeserializers.java:286)
04-26 11:43:59.628 23373 23985 E UpdateService: 	at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:504)
04-26 11:43:59.628 23373 23985 E UpdateService: 	at com.fasterxml.jackson.databind.deser.impl.FieldProperty.deserializeAndSet(FieldProperty.java:108)
04-26 11:43:59.628 23373 23985 E UpdateService: 	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:357)
04-26 11:43:59.628 23373 23985 E UpdateService: 	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:148)
04-26 11:43:59.628 23373 23985 E UpdateService: 	at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:287)
04-26 11:43:59.628 23373 23985 E UpdateService: 	at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:259)
04-26 11:43:59.628 23373 23985 E UpdateService: 	at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:26)
04-26 11:43:59.628 23373 23985 E UpdateService: 	at com.fasterxml.jackson.databind.deser.std.MapDeserializer._readAndBindStringKeyMap(MapDeserializer.java:517)
04-26 11:43:59.628 23373 23985 E UpdateService: 	at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:362)
04-26 11:43:59.628 23373 23985 E UpdateService: 	at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:27)
04-26 11:43:59.628 23373 23985 E UpdateService: 	at com.fasterxml.jackson.databind.ObjectMapper._readValue(ObjectMapper.java:3770)
04-26 11:43:59.628 23373 23985 E UpdateService: 	at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2123)
04-26 11:43:59.628 23373 23985 E UpdateService: 	at org.fdroid.fdroid.IndexV1Updater.parsePackages(IndexV1Updater.java:372)
04-26 11:43:59.628 23373 23985 E UpdateService: 	at org.fdroid.fdroid.IndexV1Updater.processIndexV1(IndexV1Updater.java:220)
04-26 11:43:59.628 23373 23985 E UpdateService: 	at org.fdroid.fdroid.IndexV1Updater.processDownloadedIndex(IndexV1Updater.java:156)
04-26 11:43:59.628 23373 23985 E UpdateService: 	at org.fdroid.fdroid.IndexV1Updater.update(IndexV1Updater.java:98)
04-26 11:43:59.628 23373 23985 E UpdateService: 	... 5 more

Merge request reports