Skip to content

Commit 0526b80

Browse files
Validate typename prefix is valid when creating ListType request while resolving hook target names (#1022)
1 parent 2fee279 commit 0526b80

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

src/rpdk/core/type_name_resolver.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import fnmatch
22
import logging
33
import os
4+
import re
45

56
from botocore.exceptions import ClientError
67

@@ -13,6 +14,9 @@
1314
REGISTRY_VISIBILITY_PRIVATE = "PRIVATE"
1415
REGISTRY_VISIBILITY_PUBLIC = "PUBLIC"
1516
REGISTRY_RESULTS_PAGE_SIZE = 100
17+
TYPE_NAME_PREFIX_REGEX = (
18+
r"([A-Za-z0-9]{2,64}::){0,2}([A-Za-z0-9]{2,64}:?){0,1}(:[A-Za-z0-9:]{2,64}){0,1}"
19+
)
1620

1721

1822
def contains_wildcard(pattern):
@@ -132,7 +136,7 @@ def _create_list_types_request(type_names):
132136
prefix = prefix[:index]
133137

134138
req = {}
135-
if prefix:
139+
if prefix and re.fullmatch(TYPE_NAME_PREFIX_REGEX, prefix):
136140
req["Filters"] = {"TypeNamePrefix": prefix}
137141

138142
return req

tests/test_type_name_resolver.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -237,15 +237,18 @@ def test_resolve_type_names_locally_no_local_info(resolver):
237237
(["AWS::S?::Bucket"], "AWS::S"),
238238
(["AWS::S?::*Bucket"], "AWS::S"),
239239
(["AWS::*::Log*"], "AWS::"),
240-
(["A*::S?::Bucket*"], "A"),
240+
(["A*::S?::Bucket*"], None),
241241
(["*::S?::Bucket*"], ""),
242242
(["AWS::S?::BucketPolicy", "AWS::S3::Bucket"], "AWS::S"),
243243
(["AWS::S*::Queue", "AWS::DynamoDB::*"], "AWS::"),
244+
(["AwsCommunity::S3::BucketVersioningEnabled", "AWS::*"], None),
245+
(["AWSSamples::*", f'AW{"S" * 64}*', "AWS::S3::Bucket"], "AWS"),
246+
([f'AW{"S" * 64}*'], None),
244247
],
245248
)
246249
def test_create_list_types_request(type_names, expected):
247250
req = TypeNameResolver._create_list_types_request(type_names)
248251
if not expected:
249-
assert not req
252+
assert req == {}
250253
else:
251254
assert req == {"Filters": {"TypeNamePrefix": expected}}

0 commit comments

Comments
 (0)