Skip to content

Commit e70b6c4

Browse files
committed
♻️ Use Pattern.quote() for regex escaping in MongoRequest
1 parent 7fa4940 commit e70b6c4

File tree

1 file changed

+6
-12
lines changed

1 file changed

+6
-12
lines changed

commons/src/main/java/org/restheart/exchange/MongoRequest.java

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -492,21 +492,15 @@ private String unmapUri(String mappedUri) {
492492
}
493493
}
494494

495-
Pattern SPECIAL_REGEX_CHARS = Pattern.compile("[{}()\\[\\].+*?^$\\\\|]");
496-
497-
String escapeSpecialRegexChars(String str) {
498-
return SPECIAL_REGEX_CHARS.matcher(str).replaceAll("\\\\$0");
499-
}
500-
501495
private String unmapPathUri(String mappedUri) {
502496
var ret = URLUtils.removeTrailingSlashes(mappedUri);
503497

504498
if (whatUri.equals("*")) {
505499
if (!this.whereUri.equals(SLASH)) {
506-
ret = ret.replaceFirst("^" + escapeSpecialRegexChars(this.whereUri), "");
500+
ret = ret.replaceFirst("^" + Pattern.quote(this.whereUri), "");
507501
}
508502
} else if (!this.whereUri.equals(SLASH)) {
509-
ret = URLUtils.removeTrailingSlashes(ret.replaceFirst("^" + escapeSpecialRegexChars(this.whereUri), this.whatUri));
503+
ret = URLUtils.removeTrailingSlashes(ret.replaceFirst("^" + Pattern.quote(this.whereUri), this.whatUri));
510504
} else {
511505
ret = URLUtils.removeTrailingSlashes(URLUtils.removeTrailingSlashes(this.whatUri) + ret);
512506
}
@@ -525,11 +519,11 @@ private String unmapPathTemplateUri(String mappedUri) {
525519
// now replace mappedUri with resolved path template
526520
if (replacedWhatUri.equals("*")) {
527521
if (!this.whereUri.equals(SLASH)) {
528-
ret = ret.replaceFirst("^" + escapeSpecialRegexChars(rewriteUri), "");
522+
ret = ret.replaceFirst("^" + Pattern.quote(rewriteUri), "");
529523
}
530524
} else if (!this.whereUri.equals(SLASH)) {
531525
var x = rewriteUri;
532-
ret = URLUtils.removeTrailingSlashes(ret.replaceFirst("^" + escapeSpecialRegexChars(rewriteUri), replacedWhatUri));
526+
ret = URLUtils.removeTrailingSlashes(ret.replaceFirst("^" + Pattern.quote(rewriteUri), replacedWhatUri));
533527
} else {
534528
ret = URLUtils.removeTrailingSlashes(URLUtils.removeTrailingSlashes(replacedWhatUri) + ret);
535529
}
@@ -561,7 +555,7 @@ private String mapPathUri(String unmappedUri) {
561555
return this.whereUri + unmappedUri;
562556
}
563557
} else {
564-
ret = URLUtils.removeTrailingSlashes(ret.replaceFirst("^" + escapeSpecialRegexChars(this.whatUri), this.whereUri));
558+
ret = URLUtils.removeTrailingSlashes(ret.replaceFirst("^" + Pattern.quote(this.whatUri), this.whereUri));
565559
}
566560

567561
if (ret.isEmpty()) {
@@ -584,7 +578,7 @@ private String mapPathTemplateUri(String unmappedUri) {
584578
return rewriteUri + unmappedUri;
585579
}
586580
} else {
587-
ret = URLUtils.removeTrailingSlashes(ret.replaceFirst("^" + escapeSpecialRegexChars(replacedWhatUri), rewriteUri));
581+
ret = URLUtils.removeTrailingSlashes(ret.replaceFirst("^" + Pattern.quote(replacedWhatUri), rewriteUri));
588582
}
589583

590584
return ret.isEmpty() ? SLASH : ret;

0 commit comments

Comments
 (0)