Skip to content

Commit 7700cbb

Browse files
committed
fix: vulnerable to polynomial runtime due to backtracking
1 parent 973900e commit 7700cbb

File tree

2 files changed

+3
-3
lines changed

2 files changed

+3
-3
lines changed

src/main/java/io/neonbee/endpoint/odatav4/ODataProxyEndpointHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public final class ODataProxyEndpointHandler implements Handler<RoutingContext>
3131

3232
// Regex to find last path segment
3333
private static final Pattern ENTITY_NAME_PATTERN =
34-
Pattern.compile("/(\\w+)(?:\\(.*\\))?(?:/(\\w+))?$");
34+
Pattern.compile("/(\\w+)(?:\\([^)]*\\))?(?:/(\\w+))?$");
3535

3636
private final ServiceMetadata serviceMetadata;
3737

src/main/java/io/neonbee/entity/AbstractEntityVerticle.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,8 @@ public abstract class AbstractEntityVerticle<T> extends DataVerticle<T> {
9595
* </pre>
9696
*/
9797
@VisibleForTesting
98-
static final Pattern URI_PATH_PATTERN =
99-
Pattern.compile("^/*((?:(.*)\\.)?(.*?))/(([A-Za-z_]\\w+).*?)(?:(?<=\\))/(.*))?$");
98+
static final Pattern URI_PATH_PATTERN = Pattern.compile(
99+
"^/*(?<serviceNamespace>(?:(?<cdsNamespace>[^/]+(?:/[^/]+)*)\\.)?(?<cdsServiceName>[^/\\.]+))/(?<entityPath>(?<entitySetName>[A-Za-z_]\\w*)(?:[^/]*))(?:/(?<entityPropertyName>.*))?$");
100100

101101
private static final LoggingFacade LOGGER = LoggingFacade.create();
102102

0 commit comments

Comments
 (0)