pigelvy opened a new pull request, #501:
URL: https://github.com/apache/felix-dev/pull/501

   On Windows, if Apache Felix is run from a `subst` drive (e.g. "`P:\felix`" 
where "P:" is a "`subst`" drive to "`C:\tmp`"), some internal resources failed 
to be properly resolved on startup.
   
   I noticed that, with Java 25, an exception occured in 
`org.apache.felix.framework.Felix#handleJavaVersionChange()`.
   
   ```
   ERROR: Bundle org.apache.felix.framework [0] The data file must be inside 
the data dir. Could not create framework: java.lang.NullPointerException: 
Cannot invoke "java.io.File.isFile()" because "dataFile" is null 
java.lang.NullPointerException: Cannot invoke "java.io.File.isFile()" because 
"dataFile" is null
           at 
org.apache.felix.framework.Felix.handleJavaVersionChange(Felix.java:1012)
           at org.apache.felix.framework.Felix.init(Felix.java:810)
           at org.apache.felix.framework.Felix.init(Felix.java:648)
           at org.apache.felix.main.Main.main(Main.java:289)
   ```
   
   After some investigation and step-by-step debugging, it appeared that the 
issue is located in `BundleCache#getSystemBundleDataFile(String)` because the 
canonical paths are not resolved similarly. This causes the file to be detected 
as outside of it directory.
   
   ```
   String dataFilePath = 
BundleCache.getSecureAction().getCanonicalPath(dataFile);
   String dataDirPath = BundleCache.getSecureAction().getCanonicalPath(sbDir);
   if (!dataFilePath.equals(dataDirPath) && 
!dataFilePath.startsWith(dataDirPath + File.separatorChar))
   {
       throw new IllegalArgumentException("The data file must be inside the 
data dir.");
   }
   ```
   
   To prevent this verification from being too dependent on the underlying 
file-system and the resolution to real paths, this commit leverages 
`java.nio.file.Path#normalize` to sanitize the file path.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to