From 967a856061d1f6f89625eca890e386c5ea6ee11d Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Mon, 22 Jun 2020 15:25:02 +0300 Subject: [PATCH] Do not allow ":" and "/" chars in a package name --- platformio/package/manifest/schema.py | 8 +++++++- tests/package/test_manifest.py | 4 ++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/platformio/package/manifest/schema.py b/platformio/package/manifest/schema.py index 11d3f902..3502550a 100644 --- a/platformio/package/manifest/schema.py +++ b/platformio/package/manifest/schema.py @@ -149,7 +149,13 @@ class ExampleSchema(StrictSchema): class ManifestSchema(BaseSchema): # Required fields - name = fields.Str(required=True, validate=validate.Length(min=1, max=100)) + name = fields.Str( + required=True, + validate=[ + validate.Length(min=1, max=100), + validate.Regexp(r"^[^:/]+$", error="The next chars [:/] are not allowed"), + ], + ) version = fields.Str(required=True, validate=validate.Length(min=1, max=50)) # Optional fields diff --git a/tests/package/test_manifest.py b/tests/package/test_manifest.py index e497c0b4..73acfdaf 100644 --- a/tests/package/test_manifest.py +++ b/tests/package/test_manifest.py @@ -841,3 +841,7 @@ def test_broken_schemas(): version="1.2.3", ) ) + + # invalid package name + with pytest.raises(ManifestValidationError, match=("are not allowed")): + ManifestSchema().load_manifest(dict(name="C/C++ :library", version="1.2.3"))