Skip to content

Commit b9871ec

Browse files
committed
Simplify resource path validation
1 parent 336ce18 commit b9871ec

2 files changed

Lines changed: 24 additions & 6 deletions

File tree

javaagent-bootstrap/src/main/java/io/opentelemetry/javaagent/bootstrap/AgentClassLoader.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -288,9 +288,18 @@ private static boolean isNormalizedResourcePath(String resourceName) {
288288
return false;
289289
}
290290

291-
for (String segment : resourceName.split("/", -1)) {
292-
if (segment.isEmpty() || segment.equals(".") || segment.equals("..")) {
293-
return false;
291+
int segmentStart = 0;
292+
for (int i = 0; i <= resourceName.length(); i++) {
293+
if (i == resourceName.length() || resourceName.charAt(i) == '/') {
294+
int length = i - segmentStart;
295+
if (length == 0
296+
|| (length == 1 && resourceName.charAt(segmentStart) == '.')
297+
|| (length == 2
298+
&& resourceName.charAt(segmentStart) == '.'
299+
&& resourceName.charAt(segmentStart + 1) == '.')) {
300+
return false;
301+
}
302+
segmentStart = i + 1;
294303
}
295304
}
296305

muzzle/src/main/java/io/opentelemetry/javaagent/tooling/muzzle/ReferenceCollector.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -134,9 +134,18 @@ private static boolean isNormalizedResourcePath(String resourceName) {
134134
return false;
135135
}
136136

137-
for (String segment : resourceName.split("/", -1)) {
138-
if (segment.isEmpty() || segment.equals(".") || segment.equals("..")) {
139-
return false;
137+
int segmentStart = 0;
138+
for (int i = 0; i <= resourceName.length(); i++) {
139+
if (i == resourceName.length() || resourceName.charAt(i) == '/') {
140+
int length = i - segmentStart;
141+
if (length == 0
142+
|| (length == 1 && resourceName.charAt(segmentStart) == '.')
143+
|| (length == 2
144+
&& resourceName.charAt(segmentStart) == '.'
145+
&& resourceName.charAt(segmentStart + 1) == '.')) {
146+
return false;
147+
}
148+
segmentStart = i + 1;
140149
}
141150
}
142151

0 commit comments

Comments
 (0)