chiark / gitweb /
check whether metadata file is a duplicate before parsing it
authorHans-Christoph Steiner <hans@eds.org>
Wed, 23 Mar 2016 20:04:20 +0000 (21:04 +0100)
committerHans-Christoph Steiner <hans@eds.org>
Tue, 21 Jun 2016 08:29:56 +0000 (10:29 +0200)
By checking first, this prevents a stacktrace when the duplicate metadata
file is not valid.  For example, in the tests, the duplicate is just a zero
length file, which was causing a stacktrace.

fdroidserver/metadata.py

index ded6cd1a4057c9e345f715ab89a7b5fc9b534339..9ba9b1fdef17d8a1ecb0acb9c2a9c5dd418d80c6 100644 (file)
@@ -783,9 +783,10 @@ def read_metadata(xref=True):
                                + glob.glob('.fdroid.json')
                                + glob.glob('.fdroid.xml')
                                + glob.glob('.fdroid.yml')):
+        packageName, _ = fdroidserver.common.get_extension(os.path.basename(metadatapath))
+        if packageName in apps:
+            raise MetaDataException("Found multiple metadata files for " + packageName)
         app = parse_metadata(metadatapath)
-        if app.id in apps:
-            raise MetaDataException("Found multiple metadata files for " + app.id)
         check_metadata(app)
         apps[app.id] = app