From 929b388ba5df98487382e60f3a2c2a839903f4c1 Mon Sep 17 00:00:00 2001 From: Nikolay Benlioglu <36928407+nbenliogludev@users.noreply.github.com> Date: Fri, 27 Sep 2024 18:14:51 +0300 Subject: [PATCH] fix: handle null path parameter in RestNodesCapabilitiesAction (#113413) --- docs/changelog/113413.yaml | 6 ++++++ .../action/admin/cluster/RestNodesCapabilitiesAction.java | 5 ++++- 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 docs/changelog/113413.yaml diff --git a/docs/changelog/113413.yaml b/docs/changelog/113413.yaml new file mode 100644 index 0000000000000..8b1104ba61fe4 --- /dev/null +++ b/docs/changelog/113413.yaml @@ -0,0 +1,6 @@ +pr: 113413 +summary: Fixed a `NullPointerException` in `_capabilities` API when the `path` parameter is null. +area: Infra/REST API +type: bug +issues: + - 113413 diff --git a/server/src/main/java/org/elasticsearch/rest/action/admin/cluster/RestNodesCapabilitiesAction.java b/server/src/main/java/org/elasticsearch/rest/action/admin/cluster/RestNodesCapabilitiesAction.java index ad405656631b0..5c8e5928678c3 100644 --- a/server/src/main/java/org/elasticsearch/rest/action/admin/cluster/RestNodesCapabilitiesAction.java +++ b/server/src/main/java/org/elasticsearch/rest/action/admin/cluster/RestNodesCapabilitiesAction.java @@ -54,9 +54,12 @@ protected RestChannelConsumer prepareRequest(RestRequest request, NodeClient cli ? new NodesCapabilitiesRequest(client.getLocalNodeId()) : new NodesCapabilitiesRequest(); + // Handle the 'path' parameter, use "/" as default if not provided + String path = URLDecoder.decode(request.param("path", "/"), StandardCharsets.UTF_8); + NodesCapabilitiesRequest r = requestNodes.timeout(getTimeout(request)) .method(RestRequest.Method.valueOf(request.param("method", "GET"))) - .path(URLDecoder.decode(request.param("path"), StandardCharsets.UTF_8)) + .path(path) .parameters(request.paramAsStringArray("parameters", Strings.EMPTY_ARRAY)) .capabilities(request.paramAsStringArray("capabilities", Strings.EMPTY_ARRAY)) .restApiVersion(request.getRestApiVersion());