Skip to content

Commit 0f32d21

Browse files
committed
add protection for existsAlias with no index and no alias
1 parent 55e87d8 commit 0f32d21

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

client/rest-high-level/src/main/java/org/elasticsearch/client/Request.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -477,6 +477,9 @@ static Request existsAlias(GetAliasesRequest getAliasesRequest) {
477477
Params params = Params.builder();
478478
params.withIndicesOptions(getAliasesRequest.indicesOptions());
479479
params.withLocal(getAliasesRequest.local());
480+
if (getAliasesRequest.indices().length == 0 && getAliasesRequest.aliases().length == 0) {
481+
throw new IllegalArgumentException("existsAlias requires at least an alias or an index");
482+
}
480483
String endpoint = endpoint(getAliasesRequest.indices(), "_alias", getAliasesRequest.aliases());
481484
return new Request("HEAD", endpoint, params.getParams(), null);
482485
}

client/rest-high-level/src/test/java/org/elasticsearch/client/RequestTests.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -988,7 +988,8 @@ public void testExistsAlias() {
988988
GetAliasesRequest getAliasesRequest = new GetAliasesRequest();
989989
String[] indices = randomIndicesNames(0, 5);
990990
getAliasesRequest.indices(indices);
991-
String[] aliases = randomIndicesNames(0, 5);
991+
//the HEAD endpoint requires at least an alias or an index
992+
String[] aliases = randomIndicesNames(indices.length == 0 ? 1 : 0, 5);
992993
getAliasesRequest.aliases(aliases);
993994
Map<String, String> expectedParams = new HashMap<>();
994995
if (randomBoolean()) {
@@ -1015,6 +1016,12 @@ public void testExistsAlias() {
10151016
assertNull(request.getEntity());
10161017
}
10171018

1019+
public void testExistsAliasNoAliasNoIndex() {
1020+
GetAliasesRequest getAliasesRequest = new GetAliasesRequest();
1021+
IllegalArgumentException iae = expectThrows(IllegalArgumentException.class, () -> Request.existsAlias(getAliasesRequest));
1022+
assertEquals("existsAlias requires at least an alias or an index", iae.getMessage());
1023+
}
1024+
10181025
private static void assertToXContentBody(ToXContent expectedBody, HttpEntity actualEntity) throws IOException {
10191026
BytesReference expectedBytes = XContentHelper.toXContent(expectedBody, REQUEST_BODY_CONTENT_TYPE, false);
10201027
assertEquals(XContentType.JSON.mediaTypeWithoutParameters(), actualEntity.getContentType().getValue());

0 commit comments

Comments
 (0)