Ensure package names are valid

This commit is contained in:
Ciaran Gultnieks 2015-01-26 18:29:39 +00:00
parent fe7f6cfe50
commit 384f97e998
2 changed files with 18 additions and 0 deletions

View File

@ -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):

View File

@ -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()