Skip to content

Commit 478a274

Browse files
authored
[8.17] Fix msearch request parsing when index expression is null (#130776) (#130970)
* Fix msearch request parsing when index expression is null (#130776) * Fix parsing when index expression is null * fix test
1 parent bd398e4 commit 478a274

File tree

3 files changed

+18
-0
lines changed

3 files changed

+18
-0
lines changed

docs/changelog/130776.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
pr: 130776
2+
summary: Fix msearch request parsing when index expression is null
3+
area: Search
4+
type: bug
5+
issues:
6+
- 129631

server/src/main/java/org/elasticsearch/common/xcontent/support/XContentMapValues.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -567,6 +567,9 @@ public static Map<String, Object> nodeMapValue(Object node, String desc) {
567567
* Otherwise the node is treated as a comma-separated string.
568568
*/
569569
public static String[] nodeStringArrayValue(Object node) {
570+
if (node == null) {
571+
throw new ElasticsearchParseException("Expected a list of strings but got null");
572+
}
570573
if (isArray(node)) {
571574
List<?> list = (List<?>) node;
572575
String[] arr = new String[list.size()];

server/src/test/java/org/elasticsearch/action/search/MultiSearchRequestTests.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
package org.elasticsearch.action.search;
1111

12+
import org.elasticsearch.ElasticsearchParseException;
1213
import org.elasticsearch.action.support.IndicesOptions;
1314
import org.elasticsearch.common.CheckedBiConsumer;
1415
import org.elasticsearch.common.Strings;
@@ -594,6 +595,14 @@ public void testFailOnExtraCharacters() throws IOException {
594595
}
595596
}
596597

598+
public void testNullIndex() throws IOException {
599+
ElasticsearchParseException e = expectThrows(ElasticsearchParseException.class, () -> parseMultiSearchRequestFromString("""
600+
{"index": null}
601+
{ "query": {"match_all": {}}}
602+
""", null));
603+
assertThat(e.getMessage(), containsString("Expected a list of strings but got null"));
604+
}
605+
597606
private static MultiSearchRequest mutate(MultiSearchRequest searchRequest) throws IOException {
598607
MultiSearchRequest mutation = copyRequest(searchRequest);
599608
List<CheckedRunnable<IOException>> mutators = new ArrayList<>();

0 commit comments

Comments
 (0)