diff --git a/src/main/java/org/opensearch/sdk/rest/BaseExtensionRestHandler.java b/src/main/java/org/opensearch/sdk/rest/BaseExtensionRestHandler.java index 5e8a805f3..46c07ce7f 100644 --- a/src/main/java/org/opensearch/sdk/rest/BaseExtensionRestHandler.java +++ b/src/main/java/org/opensearch/sdk/rest/BaseExtensionRestHandler.java @@ -23,6 +23,8 @@ import java.util.function.Function; import static org.apache.http.entity.ContentType.APPLICATION_JSON; + +import org.opensearch.OpenSearchException; import org.opensearch.common.logging.DeprecationLogger; import org.opensearch.common.xcontent.json.JsonXContent; import org.opensearch.extensions.rest.ExtensionRestResponse; @@ -41,6 +43,7 @@ */ public abstract class BaseExtensionRestHandler implements ExtensionRestHandler { + private static final String VALID_EXTENSION_NAME_PATTERN = "^[a-zA-Z0-9:/*_]*$"; private static String extensionName; /** @@ -77,6 +80,12 @@ protected List replacedRouteHandlers() { } public void setExtensionName(String extensionName) { + if (extensionName == null || extensionName.isBlank() || !extensionName.matches(VALID_EXTENSION_NAME_PATTERN)) { + throw new OpenSearchException( + "Invalid extension name specified. The extension name may include the following characters" + + " 'a-z', 'A-Z', '0-9', ':', '/', '*', '_'" + ); + } BaseExtensionRestHandler.extensionName = extensionName; }