From 9e3bfb809ede88409f1e80f647d6b7873f314295 Mon Sep 17 00:00:00 2001 From: Alexander Reelsen Date: Mon, 23 Mar 2020 12:53:04 +0100 Subject: [PATCH] Restrict template name when putting index template Storing an index template named `*` will result in the in ability to delete it. Also that naming is really confusing. --- .../admin/indices/template/put/PutIndexTemplateRequest.java | 2 ++ .../indices/template/put/PutIndexTemplateRequestTests.java | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/server/src/main/java/org/elasticsearch/action/admin/indices/template/put/PutIndexTemplateRequest.java b/server/src/main/java/org/elasticsearch/action/admin/indices/template/put/PutIndexTemplateRequest.java index 1ad5cedb9332c..4c6aab975c2dc 100644 --- a/server/src/main/java/org/elasticsearch/action/admin/indices/template/put/PutIndexTemplateRequest.java +++ b/server/src/main/java/org/elasticsearch/action/admin/indices/template/put/PutIndexTemplateRequest.java @@ -125,6 +125,8 @@ public ActionRequestValidationException validate() { ActionRequestValidationException validationException = null; if (name == null) { validationException = addValidationError("name is missing", validationException); + } else if (name.contains("*")) { + validationException = addValidationError("may not contain an asterisk", validationException); } if (indexPatterns == null || indexPatterns.size() == 0) { validationException = addValidationError("index patterns are missing", validationException); diff --git a/server/src/test/java/org/elasticsearch/action/admin/indices/template/put/PutIndexTemplateRequestTests.java b/server/src/test/java/org/elasticsearch/action/admin/indices/template/put/PutIndexTemplateRequestTests.java index 4f68777f9bf0d..c15041c274843 100644 --- a/server/src/test/java/org/elasticsearch/action/admin/indices/template/put/PutIndexTemplateRequestTests.java +++ b/server/src/test/java/org/elasticsearch/action/admin/indices/template/put/PutIndexTemplateRequestTests.java @@ -54,6 +54,11 @@ public void testValidateErrorMessage() { request.patterns(Collections.singletonList("test-*")); ActionRequestValidationException noError = request.validate(); assertThat(noError, is(nullValue())); + + request.name("*"); + ActionRequestValidationException badIndexTemplateName = request.validate(); + assertThat(badIndexTemplateName.validationErrors(), hasSize(1)); + assertThat(badIndexTemplateName.getMessage(), containsString("may not contain an asterisk")); } public void testMappingKeyedByType() throws IOException {