Skip to content

Commit ae52008

Browse files
committed
Fix unchecked cast in dynamic action map getter (opensearch-project#15394)
Signed-off-by: Daniel Widdis <[email protected]>
1 parent 4c4d4d7 commit ae52008

File tree

3 files changed

+12
-2
lines changed

3 files changed

+12
-2
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6565
- Fixed array field name omission in flat_object function for nested JSON ([#13620](https://github.com/opensearch-project/OpenSearch/pull/13620))
6666
- Fix incorrect parameter names in MinHash token filter configuration handling ([#15233](https://github.com/opensearch-project/OpenSearch/pull/15233))
6767
- Fix range aggregation optimization ignoring top level queries ([#15287](https://github.com/opensearch-project/OpenSearch/pull/15287))
68+
- Fix split response processor not included in allowlist ([#15393](https://github.com/opensearch-project/OpenSearch/pull/15393))
69+
- Fix unchecked cast in dynamic action map getter ([#15394](https://github.com/opensearch-project/OpenSearch/pull/15394))
6870

6971
### Security
7072

server/src/main/java/org/opensearch/action/ActionModule.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1177,9 +1177,12 @@ public void unregisterDynamicRoute(NamedRoute route) {
11771177
* @param route The {@link RestHandler.Route}.
11781178
* @return the corresponding {@link RestSendToExtensionAction} if it is registered, null otherwise.
11791179
*/
1180-
@SuppressWarnings("unchecked")
11811180
public RestSendToExtensionAction get(RestHandler.Route route) {
1182-
return routeRegistry.get(route);
1181+
if (route instanceof NamedRoute) {
1182+
return routeRegistry.get((NamedRoute) route);
1183+
}
1184+
// Only NamedRoutes are map keys so any other route is not in the map
1185+
return null;
11831186
}
11841187
}
11851188
}

server/src/test/java/org/opensearch/action/DynamicActionRegistryTests.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.opensearch.extensions.action.ExtensionTransportAction;
2121
import org.opensearch.extensions.rest.RestSendToExtensionAction;
2222
import org.opensearch.rest.NamedRoute;
23+
import org.opensearch.rest.RestHandler;
2324
import org.opensearch.rest.RestRequest;
2425
import org.opensearch.tasks.Task;
2526
import org.opensearch.tasks.TaskManager;
@@ -85,13 +86,17 @@ public void testDynamicActionRegistryWithNamedRoutes() {
8586
RestSendToExtensionAction action2 = mock(RestSendToExtensionAction.class);
8687
NamedRoute r1 = new NamedRoute.Builder().method(RestRequest.Method.GET).path("/foo").uniqueName("foo").build();
8788
NamedRoute r2 = new NamedRoute.Builder().method(RestRequest.Method.PUT).path("/bar").uniqueName("bar").build();
89+
RestHandler.Route r3 = new RestHandler.Route(RestRequest.Method.DELETE, "/foo");
8890

8991
DynamicActionRegistry registry = new DynamicActionRegistry();
9092
registry.registerDynamicRoute(r1, action);
9193
registry.registerDynamicRoute(r2, action2);
9294

9395
assertTrue(registry.isActionRegistered("foo"));
96+
assertEquals(action, registry.get(r1));
9497
assertTrue(registry.isActionRegistered("bar"));
98+
assertEquals(action2, registry.get(r2));
99+
assertNull(registry.get(r3));
95100

96101
registry.unregisterDynamicRoute(r2);
97102

0 commit comments

Comments
 (0)