Skip to content

Commit 45ff084

Browse files
committed
[GR-41981] Use canonical resource path in resource registration
PullRequest: graal/18518
2 parents fe84b5f + f770983 commit 45ff084

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

substratevm/src/com.oracle.svm.configure/src/com/oracle/svm/configure/config/ResourceConfiguration.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
import com.oracle.svm.core.configure.ConfigurationParser;
4949
import com.oracle.svm.core.configure.ResourceConfigurationParser;
5050
import com.oracle.svm.core.configure.ResourcesRegistry;
51+
import com.oracle.svm.core.jdk.Resources;
5152
import com.oracle.svm.core.jdk.resources.CompressedGlobTrie.GlobUtils;
5253
import com.oracle.svm.core.util.VMError;
5354

@@ -210,7 +211,12 @@ public void addResourcePattern(UnresolvedConfigurationCondition condition, Strin
210211
}
211212

212213
public void addGlobPattern(UnresolvedConfigurationCondition condition, String pattern, String module) {
213-
ResourceEntry element = new ResourceEntry(escapePossibleGlobWildcards(pattern), module);
214+
/*
215+
* prevent patterns discovered by the agent to be written in the non-canonical form. Example
216+
* canonical path: foo/1.txt; non-canonical path: foo/bar/../1.txt
217+
*/
218+
String canonicalPattern = Resources.toCanonicalForm(pattern);
219+
ResourceEntry element = new ResourceEntry(escapePossibleGlobWildcards(canonicalPattern), module);
214220
addedGlobs.add(new ConditionalElement<>(condition, element));
215221
}
216222

substratevm/src/com.oracle.svm.hosted/src/com/oracle/svm/hosted/ResourcesFeature.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,8 @@ public void addResources(ConfigurationCondition condition, String pattern) {
190190

191191
@Override
192192
public void addGlob(ConfigurationCondition condition, String module, String glob) {
193-
String resolvedGlob = GlobUtils.transformToTriePath(glob, module);
193+
String canonicalGlob = Resources.toCanonicalForm(glob);
194+
String resolvedGlob = GlobUtils.transformToTriePath(canonicalGlob, module);
194195
globWorkSet.add(new ConditionalPattern(condition, resolvedGlob));
195196
}
196197

0 commit comments

Comments
 (0)