Skip to content

Commit 1c44a82

Browse files
committed
server: Validate parent descriptor when creating derived data provider
This can prevent creating derived providers from hidden data providers. Signed-off-by: Patrick Tasse <patrick.tasse@gmail.com>
1 parent 20b5a7b commit 1c44a82

2 files changed

Lines changed: 7 additions & 2 deletions

File tree

  • trace-server
    • org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core.tests/src/org/eclipse/tracecompass/incubator/trace/server/jersey/rest/core/tests/services
    • org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core/src/org/eclipse/tracecompass/incubator/internal/trace/server/jersey/rest/core/services

trace-server/org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core.tests/src/org/eclipse/tracecompass/incubator/trace/server/jersey/rest/core/tests/services/DataProviderConfigurationServiceTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*******************************************************************************
2-
* Copyright (c) 2024 Ericsson and others
2+
* Copyright (c) 2024, 2025 Ericsson and others
33
*
44
* All rights reserved. This program and the accompanying materials are
55
* made available under the terms of the Eclipse Public License 2.0 which
@@ -201,7 +201,7 @@ public void testCreationOfDerivedDataProvidersErrors() throws IOException, URISy
201201
dpCreationEndpoint = getDpCreationEndpoint(exp.getUUID().toString(), UNKNOWN_DP_ID);
202202
try (Response response = assertDpPostWithErrors(dpCreationEndpoint, configuration)) {
203203
assertEquals(Status.NOT_FOUND.getStatusCode(), response.getStatus());
204-
assertEquals(EndpointConstants.NO_SUCH_PROVIDER, response.readEntity(String.class));
204+
assertEquals(EndpointConstants.NO_SUCH_PROVIDER + ": " + UNKNOWN_DP_ID, response.readEntity(String.class));
205205
}
206206

207207
// Test config type is not applicable for another data provider

trace-server/org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core/src/org/eclipse/tracecompass/incubator/internal/trace/server/jersey/rest/core/services/DataProviderService.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1302,6 +1302,11 @@ public Response createProvider(
13021302
return errorResponse;
13031303
}
13041304

1305+
IDataProviderDescriptor parentDescriptor = getDescriptor(experiment, outputId);
1306+
if (parentDescriptor == null) {
1307+
return Response.status(Status.NOT_FOUND).entity(NO_SUCH_PROVIDER + ": " + outputId).build(); //$NON-NLS-1$
1308+
}
1309+
13051310
IDataProviderFactory factory = manager.getFactory(outputId);
13061311
if (factory == null) {
13071312
return Response.status(Status.NOT_FOUND).entity(NO_SUCH_PROVIDER).build();

0 commit comments

Comments
 (0)