Merge remote-tracking branch 'origin/GP-6714_dev747368_samedirdebuginfod_filepath'

This commit is contained in:
Ryan Kurtz
2026-04-20 13:40:17 -04:00

View File

@@ -94,7 +94,7 @@ public class SameDirDebugInfoProvider implements DebugFileProvider {
if (debugInfo.hasDebugLink()) {
// This differs from the LocalDirDebugLinkProvider in that it does NOT recursively search
// for the file
File debugFile = new File(progDir, debugInfo.getFilename());
File debugFile = ensureSafeFilename(debugInfo.getFilename());
if (debugFile.isFile()) {
int fileCRC = LocalDirDebugLinkProvider.calcCRC(debugFile);
if (fileCRC == debugInfo.getCrc()) {
@@ -109,7 +109,7 @@ public class SameDirDebugInfoProvider implements DebugFileProvider {
if (debugInfo.hasBuildId()) {
// this probe is a w.a.g for what people might do when co-locating a build-id debug
// file with the original binary
File debugFile = new File(progDir, debugInfo.getBuildId() + ".debug");
File debugFile = ensureSafeFilename(debugInfo.getBuildId() + ".debug");
if (debugFile.isFile()) {
return debugFile;
}
@@ -118,4 +118,12 @@ public class SameDirDebugInfoProvider implements DebugFileProvider {
return null;
}
private File ensureSafeFilename(String filename) throws IOException {
File testFile = new File(progDir, filename);
if (!progDir.equals(testFile.getParentFile())) {
throw new IOException("Unsupported path specified in debug file: " + filename);
}
return testFile;
}
}