From: Ciaran Gultnieks Date: Mon, 26 Jan 2015 18:29:39 +0000 (+0000) Subject: Ensure package names are valid X-Git-Tag: 0.4.0~129 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=384f97e998b39d073d746c74411d903ae8d7d1b2;p=fdroidserver.git Ensure package names are valid --- diff --git a/fdroidserver/common.py b/fdroidserver/common.py index 45300317..56d05bd1 100644 --- a/fdroidserver/common.py +++ b/fdroidserver/common.py @@ -1055,9 +1055,16 @@ def parse_androidmanifests(paths, ignoreversions=None): if max_version is None: max_version = "Unknown" + if not is_valid_package_name(max_package): + raise FDroidException("Invalid package name {0}".format(max_package)) + return (max_version, max_vercode, max_package) +def is_valid_package_name(name): + return re.match("[A-Za-z_][A-Za-z_0-9.]+$", name) + + class FDroidException(Exception): def __init__(self, value, detail=None): diff --git a/tests/common.TestCase b/tests/common.TestCase index d2066378..0dca4f4d 100755 --- a/tests/common.TestCase +++ b/tests/common.TestCase @@ -83,6 +83,17 @@ class CommonTest(unittest.TestCase): self.assertFalse(debuggable, "debuggable APK state was not properly parsed!") + def testPackageNameValidity(self): + for name in ["org.fdroid.fdroid", + "org.f_droid.fdr0ID"]: + self.assertTrue(fdroidserver.common.is_valid_package_name(name), + "{0} should be a valid package name".format(name)) + for name in ["0rg.fdroid.fdroid", + ".f_droid.fdr0ID", + "org.fdroid/fdroid", + "/org.fdroid.fdroid"]: + self.assertFalse(fdroidserver.common.is_valid_package_name(name), + "{0} should not be a valid package name".format(name)) if __name__ == "__main__": parser = optparse.OptionParser()