diff --git a/google/genai/documents.py b/google/genai/documents.py index d542fea52..7e016ac71 100644 --- a/google/genai/documents.py +++ b/google/genai/documents.py @@ -13,6 +13,13 @@ # limitations under the License. # + +def _validate_resource_name(name: str) -> None: + if '..' in name: + raise ValueError( + f'Invalid resource name {name!r}: must not contain path traversal sequences' + ) + # Code generated by the Google Gen AI SDK generator DO NOT EDIT. from functools import partial @@ -156,6 +163,7 @@ def get( request_dict = _GetDocumentParameters_to_mldev(parameter_model) request_url_dict = request_dict.get('_url') if request_url_dict: + _validate_resource_name(request_url_dict.get('name', '')) path = '{name}'.format_map(request_url_dict) else: path = '{name}' @@ -233,6 +241,7 @@ def delete( request_dict = _DeleteDocumentParameters_to_mldev(parameter_model) request_url_dict = request_dict.get('_url') if request_url_dict: + _validate_resource_name(request_url_dict.get('name', '')) path = '{name}'.format_map(request_url_dict) else: path = '{name}' @@ -384,6 +393,7 @@ async def get( request_dict = _GetDocumentParameters_to_mldev(parameter_model) request_url_dict = request_dict.get('_url') if request_url_dict: + _validate_resource_name(request_url_dict.get('name', '')) path = '{name}'.format_map(request_url_dict) else: path = '{name}' @@ -463,6 +473,7 @@ async def delete( request_dict = _DeleteDocumentParameters_to_mldev(parameter_model) request_url_dict = request_dict.get('_url') if request_url_dict: + _validate_resource_name(request_url_dict.get('name', '')) path = '{name}'.format_map(request_url_dict) else: path = '{name}'