Skip to content

Commit a4e3b0a

Browse files
authored
Handle special cases for File.createTempFile (#133530)
We were missing a couple of cases where File.createTempFile (from java.io) are defaulting to the default temp directory. This PR addresses that. Fixes #130086
1 parent b23e2e7 commit a4e3b0a

File tree

3 files changed

+25
-1
lines changed

3 files changed

+25
-1
lines changed

libs/entitlement/bridge/src/main/java/org/elasticsearch/entitlement/bridge/EntitlementChecker.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -771,6 +771,8 @@ public interface EntitlementChecker {
771771

772772
void check$java_io_File$createNewFile(Class<?> callerClass, File file);
773773

774+
void check$java_io_File$$createTempFile(Class<?> callerClass, String prefix, String suffix);
775+
774776
void check$java_io_File$$createTempFile(Class<?> callerClass, String prefix, String suffix, File directory);
775777

776778
void check$java_io_File$delete(Class<?> callerClass, File file);

libs/entitlement/qa/entitlement-test-plugin/src/main/java/org/elasticsearch/entitlement/qa/test/FileCheckActions.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,17 @@ static void fileCreateTempFile() throws IOException {
9797
File.createTempFile("prefix", "suffix", readWriteDir().toFile());
9898
}
9999

100+
@EntitlementTest(expectedAccess = ALWAYS_ALLOWED)
101+
static void fileCreateTempFileSystemTempDirectory() throws IOException {
102+
File.createTempFile("prefix", "suffix");
103+
}
104+
105+
@EntitlementTest(expectedAccess = ALWAYS_ALLOWED)
106+
static void fileCreateTempFileNullDirectory() throws IOException {
107+
// null directory = system temp directory
108+
File.createTempFile("prefix", "suffix", null);
109+
}
110+
100111
@EntitlementTest(expectedAccess = PLUGINS)
101112
static void fileDelete() throws IOException {
102113
var toDelete = EntitledActions.createTempFileForWrite();

libs/entitlement/src/main/java/org/elasticsearch/entitlement/runtime/policy/ElasticsearchEntitlementChecker.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1489,9 +1489,20 @@ public void checkSelectorProviderOpenSocketChannel(Class<?> callerClass, Selecto
14891489
policyChecker.checkFileWrite(callerClass, file);
14901490
}
14911491

1492+
@Override
1493+
public void check$java_io_File$$createTempFile(Class<?> callerClass, String prefix, String suffix) {
1494+
policyChecker.checkCreateTempFile(callerClass);
1495+
}
1496+
14921497
@Override
14931498
public void check$java_io_File$$createTempFile(Class<?> callerClass, String prefix, String suffix, File directory) {
1494-
policyChecker.checkFileWrite(callerClass, directory);
1499+
// A null value for the directory parameter means using the temp directory (java.io.tmpdir,
1500+
// aka org.elasticsearch.env.Environment#tmpDir, aka PathLookup#TEMP).
1501+
if (directory == null) {
1502+
policyChecker.checkCreateTempFile(callerClass);
1503+
} else {
1504+
policyChecker.checkFileWrite(callerClass, directory);
1505+
}
14951506
}
14961507

14971508
@Override

0 commit comments

Comments
 (0)