Skip to content

Commit 07f99c1

Browse files
authored
Merge branch 'main' into bump_json_smart
2 parents 07b0078 + 19fe0a4 commit 07f99c1

File tree

28 files changed

+397
-213
lines changed

28 files changed

+397
-213
lines changed

.buildkite/pipelines/intake.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ steps:
7676
ES_VERSION:
7777
- "9.0.0"
7878
ES_COMMIT:
79-
- "b2cc9d9b8f00ee621f93ddca07ea9c671aab1578" # update to match last commit before lucene bump
79+
- "10352e57d85505984582616e1e38530d3ec6ca59" # update to match last commit before lucene bump / head of combat-lucene-10-0-0
8080
agents:
8181
provider: gcp
8282
image: family/elasticsearch-ubuntu-2004

build-tools-internal/version.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jna = 5.12.1
1717
netty = 4.1.115.Final
1818
commons_lang3 = 3.9
1919
google_oauth_client = 1.34.1
20-
awsv1sdk = 1.12.270
20+
awsv1sdk = 1.12.746
2121
awsv2sdk = 2.28.13
2222
reactive_streams = 1.0.4
2323

docs/changelog/122431.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
pr: 122431
2+
summary: Upgrade AWS SDK to v1.12.746
3+
area: Snapshot/Restore
4+
type: upgrade
5+
issues: []

gradle/verification-metadata.xml

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -89,29 +89,29 @@
8989
<sha256 value="ccc7efe5cd3ce22d6046cafd4d2f8bff5adcb43e0d27da482178fac5daadef81" origin="Generated by Gradle"/>
9090
</artifact>
9191
</component>
92-
<component group="com.amazonaws" name="aws-java-sdk-core" version="1.12.270">
93-
<artifact name="aws-java-sdk-core-1.12.270.jar">
94-
<sha256 value="4e41d9f54606151674fc550e5e6291b0ddf917d55a2a3465a45a4e6ac98c9f8f" origin="Generated by Gradle"/>
92+
<component group="com.amazonaws" name="aws-java-sdk-core" version="1.12.746">
93+
<artifact name="aws-java-sdk-core-1.12.746.jar">
94+
<sha256 value="798fd30dafcf6816e760ad8aef8b3f09c43351ed2e166993bddc4527dbafb0be" origin="Generated by Gradle"/>
9595
</artifact>
9696
</component>
97-
<component group="com.amazonaws" name="aws-java-sdk-ec2" version="1.12.270">
98-
<artifact name="aws-java-sdk-ec2-1.12.270.jar">
99-
<sha256 value="faadf443751822e205338e80d2cea5eabd6373c1c3cef6348c24809ca82a9dd0" origin="Generated by Gradle"/>
97+
<component group="com.amazonaws" name="aws-java-sdk-ec2" version="1.12.746">
98+
<artifact name="aws-java-sdk-ec2-1.12.746.jar">
99+
<sha256 value="cec22d57e05ed75417b1342e9dd468c6fe7f2fab97c626c065d6495e44d732ad" origin="Generated by Gradle"/>
100100
</artifact>
101101
</component>
102-
<component group="com.amazonaws" name="aws-java-sdk-s3" version="1.12.270">
103-
<artifact name="aws-java-sdk-s3-1.12.270.jar">
104-
<sha256 value="41bbea44bac7cfce3898e2e598a17526984337e265f6b16814839c17168a570e" origin="Generated by Gradle"/>
102+
<component group="com.amazonaws" name="aws-java-sdk-s3" version="1.12.746">
103+
<artifact name="aws-java-sdk-s3-1.12.746.jar">
104+
<sha256 value="dcd839802c71ffc4d3e6bebc8769a2149bc423baf95f3e6c8214f9c91536bc38" origin="Generated by Gradle"/>
105105
</artifact>
106106
</component>
107-
<component group="com.amazonaws" name="aws-java-sdk-sts" version="1.12.270">
108-
<artifact name="aws-java-sdk-sts-1.12.270.jar">
109-
<sha256 value="8cf2d3705381b81808c2e75a5e25a7097385b121ef15c001b18fde3d79657571" origin="Generated by Gradle"/>
107+
<component group="com.amazonaws" name="aws-java-sdk-sts" version="1.12.746">
108+
<artifact name="aws-java-sdk-sts-1.12.746.jar">
109+
<sha256 value="2916c28f9a6b6ade40c7e2ffdea3788b198a98b2b16830e02a24ec49fc0fb06f" origin="Generated by Gradle"/>
110110
</artifact>
111111
</component>
112-
<component group="com.amazonaws" name="jmespath-java" version="1.12.270">
113-
<artifact name="jmespath-java-1.12.270.jar">
114-
<sha256 value="515d1afb0cd0176630c0707acabd4a3e48424ea938b89359774f61a24b6450f1" origin="Generated by Gradle"/>
112+
<component group="com.amazonaws" name="jmespath-java" version="1.12.746">
113+
<artifact name="jmespath-java-1.12.746.jar">
114+
<sha256 value="d4239a7a1bfacbb9cd1f0e48a46ac95960ab7942c6fbb41ea825161efea72351" origin="Generated by Gradle"/>
115115
</artifact>
116116
</component>
117117
<component group="com.avast.gradle" name="gradle-docker-compose-plugin" version="0.17.5">

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

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
package org.elasticsearch.entitlement.bridge;
1111

1212
import java.io.File;
13+
import java.io.FileFilter;
14+
import java.io.FilenameFilter;
1315
import java.io.InputStream;
1416
import java.io.PrintStream;
1517
import java.io.PrintWriter;
@@ -512,6 +514,12 @@ public interface EntitlementChecker {
512514
//
513515

514516
// old io (ie File)
517+
void check$java_io_File$canExecute(Class<?> callerClass, File file);
518+
519+
void check$java_io_File$canRead(Class<?> callerClass, File file);
520+
521+
void check$java_io_File$canWrite(Class<?> callerClass, File file);
522+
515523
void check$java_io_File$createNewFile(Class<?> callerClass, File file);
516524

517525
void check$java_io_File$$createTempFile(Class<?> callerClass, String prefix, String suffix, File directory);
@@ -520,6 +528,28 @@ public interface EntitlementChecker {
520528

521529
void check$java_io_File$deleteOnExit(Class<?> callerClass, File file);
522530

531+
void check$java_io_File$exists(Class<?> callerClass, File file);
532+
533+
void check$java_io_File$isDirectory(Class<?> callerClass, File file);
534+
535+
void check$java_io_File$isFile(Class<?> callerClass, File file);
536+
537+
void check$java_io_File$isHidden(Class<?> callerClass, File file);
538+
539+
void check$java_io_File$lastModified(Class<?> callerClass, File file);
540+
541+
void check$java_io_File$length(Class<?> callerClass, File file);
542+
543+
void check$java_io_File$list(Class<?> callerClass, File file);
544+
545+
void check$java_io_File$list(Class<?> callerClass, File file, FilenameFilter filter);
546+
547+
void check$java_io_File$listFiles(Class<?> callerClass, File file);
548+
549+
void check$java_io_File$listFiles(Class<?> callerClass, File file, FileFilter filter);
550+
551+
void check$java_io_File$listFiles(Class<?> callerClass, File file, FilenameFilter filter);
552+
523553
void check$java_io_File$mkdir(Class<?> callerClass, File file);
524554

525555
void check$java_io_File$mkdirs(Class<?> callerClass, File file);

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

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,21 @@ static Path readWriteFile() {
4646
return testRootDir.resolve("read_write_file");
4747
}
4848

49+
@EntitlementTest(expectedAccess = PLUGINS)
50+
static void fileCanExecute() throws IOException {
51+
readFile().toFile().canExecute();
52+
}
53+
54+
@EntitlementTest(expectedAccess = PLUGINS)
55+
static void fileCanRead() throws IOException {
56+
readFile().toFile().canRead();
57+
}
58+
59+
@EntitlementTest(expectedAccess = PLUGINS)
60+
static void fileCanWrite() throws IOException {
61+
readFile().toFile().canWrite();
62+
}
63+
4964
@EntitlementTest(expectedAccess = PLUGINS)
5065
static void fileCreateNewFile() throws IOException {
5166
readWriteDir().resolve("new_file").toFile().createNewFile();
@@ -70,6 +85,61 @@ static void fileDeleteOnExit() throws IOException {
7085
toDelete.toFile().deleteOnExit();
7186
}
7287

88+
@EntitlementTest(expectedAccess = PLUGINS)
89+
static void fileExists() throws IOException {
90+
readFile().toFile().exists();
91+
}
92+
93+
@EntitlementTest(expectedAccess = PLUGINS)
94+
static void fileIsDirectory() throws IOException {
95+
readFile().toFile().isDirectory();
96+
}
97+
98+
@EntitlementTest(expectedAccess = PLUGINS)
99+
static void fileIsFile() throws IOException {
100+
readFile().toFile().isFile();
101+
}
102+
103+
@EntitlementTest(expectedAccess = PLUGINS)
104+
static void fileIsHidden() throws IOException {
105+
readFile().toFile().isHidden();
106+
}
107+
108+
@EntitlementTest(expectedAccess = PLUGINS)
109+
static void fileLastModified() throws IOException {
110+
readFile().toFile().lastModified();
111+
}
112+
113+
@EntitlementTest(expectedAccess = PLUGINS)
114+
static void fileLength() throws IOException {
115+
readFile().toFile().length();
116+
}
117+
118+
@EntitlementTest(expectedAccess = PLUGINS)
119+
static void fileList() throws IOException {
120+
readDir().toFile().list();
121+
}
122+
123+
@EntitlementTest(expectedAccess = PLUGINS)
124+
static void fileListWithFilter() throws IOException {
125+
readDir().toFile().list((dir, name) -> true);
126+
}
127+
128+
@EntitlementTest(expectedAccess = PLUGINS)
129+
static void fileListFiles() throws IOException {
130+
readDir().toFile().listFiles();
131+
}
132+
133+
@EntitlementTest(expectedAccess = PLUGINS)
134+
static void fileListFilesWithFileFilter() throws IOException {
135+
readDir().toFile().listFiles(pathname -> true);
136+
}
137+
138+
@EntitlementTest(expectedAccess = PLUGINS)
139+
static void fileListFilesWithFilenameFilter() throws IOException {
140+
readDir().toFile().listFiles((dir, name) -> true);
141+
}
142+
73143
@EntitlementTest(expectedAccess = PLUGINS)
74144
static void fileMkdir() throws IOException {
75145
Path mkdir = readWriteDir().resolve("mkdir");

libs/entitlement/src/main/java/org/elasticsearch/entitlement/initialization/EntitlementInitialization.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
package org.elasticsearch.entitlement.initialization;
1111

12+
import org.elasticsearch.core.PathUtils;
1213
import org.elasticsearch.core.internal.provider.ProviderLocator;
1314
import org.elasticsearch.entitlement.bootstrap.EntitlementBootstrap;
1415
import org.elasticsearch.entitlement.bridge.EntitlementChecker;
@@ -133,7 +134,7 @@ private static Class<?>[] findClassesToRetransform(Class<?>[] loadedClasses, Set
133134
private static PolicyManager createPolicyManager() {
134135
EntitlementBootstrap.BootstrapArgs bootstrapArgs = EntitlementBootstrap.bootstrapArgs();
135136
Map<String, Policy> pluginPolicies = bootstrapArgs.pluginPolicies();
136-
var pathLookup = new PathLookup(bootstrapArgs.configDir(), bootstrapArgs.dataDirs(), bootstrapArgs.tempDir());
137+
var pathLookup = new PathLookup(getUserHome(), bootstrapArgs.configDir(), bootstrapArgs.dataDirs(), bootstrapArgs.tempDir());
137138
Path logsDir = EntitlementBootstrap.bootstrapArgs().logsDir();
138139

139140
// TODO(ES-10031): Decide what goes in the elasticsearch default policy and extend it
@@ -221,6 +222,14 @@ private static PolicyManager createPolicyManager() {
221222
);
222223
}
223224

225+
private static Path getUserHome() {
226+
String userHome = System.getProperty("user.home");
227+
if (userHome == null) {
228+
throw new IllegalStateException("user.home system property is required");
229+
}
230+
return PathUtils.get(userHome);
231+
}
232+
224233
private static Stream<InstrumentationService.InstrumentationInfo> fileSystemProviderChecks() throws ClassNotFoundException,
225234
NoSuchMethodException {
226235
var fileSystemProviderClass = FileSystems.getDefault().provider().getClass();

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

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
import org.elasticsearch.entitlement.runtime.policy.PolicyManager;
1515

1616
import java.io.File;
17+
import java.io.FileFilter;
18+
import java.io.FilenameFilter;
1719
import java.io.IOException;
1820
import java.io.InputStream;
1921
import java.io.PrintStream;
@@ -955,6 +957,21 @@ public void checkSelectorProviderInheritedChannel(Class<?> callerClass, Selector
955957

956958
// old io (ie File)
957959

960+
@Override
961+
public void check$java_io_File$canExecute(Class<?> callerClass, File file) {
962+
policyManager.checkFileRead(callerClass, file);
963+
}
964+
965+
@Override
966+
public void check$java_io_File$canRead(Class<?> callerClass, File file) {
967+
policyManager.checkFileRead(callerClass, file);
968+
}
969+
970+
@Override
971+
public void check$java_io_File$canWrite(Class<?> callerClass, File file) {
972+
policyManager.checkFileRead(callerClass, file);
973+
}
974+
958975
@Override
959976
public void check$java_io_File$createNewFile(Class<?> callerClass, File file) {
960977
policyManager.checkFileWrite(callerClass, file);
@@ -975,6 +992,61 @@ public void checkSelectorProviderInheritedChannel(Class<?> callerClass, Selector
975992
policyManager.checkFileWrite(callerClass, file);
976993
}
977994

995+
@Override
996+
public void check$java_io_File$exists(Class<?> callerClass, File file) {
997+
policyManager.checkFileRead(callerClass, file);
998+
}
999+
1000+
@Override
1001+
public void check$java_io_File$isDirectory(Class<?> callerClass, File file) {
1002+
policyManager.checkFileRead(callerClass, file);
1003+
}
1004+
1005+
@Override
1006+
public void check$java_io_File$isFile(Class<?> callerClass, File file) {
1007+
policyManager.checkFileRead(callerClass, file);
1008+
}
1009+
1010+
@Override
1011+
public void check$java_io_File$isHidden(Class<?> callerClass, File file) {
1012+
policyManager.checkFileRead(callerClass, file);
1013+
}
1014+
1015+
@Override
1016+
public void check$java_io_File$lastModified(Class<?> callerClass, File file) {
1017+
policyManager.checkFileRead(callerClass, file);
1018+
}
1019+
1020+
@Override
1021+
public void check$java_io_File$length(Class<?> callerClass, File file) {
1022+
policyManager.checkFileRead(callerClass, file);
1023+
}
1024+
1025+
@Override
1026+
public void check$java_io_File$list(Class<?> callerClass, File file) {
1027+
policyManager.checkFileRead(callerClass, file);
1028+
}
1029+
1030+
@Override
1031+
public void check$java_io_File$list(Class<?> callerClass, File file, FilenameFilter filter) {
1032+
policyManager.checkFileRead(callerClass, file);
1033+
}
1034+
1035+
@Override
1036+
public void check$java_io_File$listFiles(Class<?> callerClass, File file) {
1037+
policyManager.checkFileRead(callerClass, file);
1038+
}
1039+
1040+
@Override
1041+
public void check$java_io_File$listFiles(Class<?> callerClass, File file, FileFilter filter) {
1042+
policyManager.checkFileRead(callerClass, file);
1043+
}
1044+
1045+
@Override
1046+
public void check$java_io_File$listFiles(Class<?> callerClass, File file, FilenameFilter filter) {
1047+
policyManager.checkFileRead(callerClass, file);
1048+
}
1049+
9781050
@Override
9791051
public void check$java_io_File$mkdir(Class<?> callerClass, File file) {
9801052
policyManager.checkFileWrite(callerClass, file);

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,4 @@
1111

1212
import java.nio.file.Path;
1313

14-
public record PathLookup(Path configDir, Path[] dataDirs, Path tempDir) {}
14+
public record PathLookup(Path homeDir, Path configDir, Path[] dataDirs, Path tempDir) {}

libs/entitlement/src/main/java/org/elasticsearch/entitlement/runtime/policy/entitlements/FilesEntitlement.java

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ public enum Mode {
3636

3737
public enum BaseDir {
3838
CONFIG,
39-
DATA
39+
DATA,
40+
HOME
4041
}
4142

4243
public sealed interface FileData {
@@ -46,12 +47,10 @@ public sealed interface FileData {
4647
Mode mode();
4748

4849
static FileData ofPath(Path path, Mode mode) {
49-
assert path.isAbsolute();
5050
return new AbsolutePathFileData(path, mode);
5151
}
5252

5353
static FileData ofRelativePath(Path relativePath, BaseDir baseDir, Mode mode) {
54-
assert relativePath.isAbsolute() == false;
5554
return new RelativePathFileData(relativePath, baseDir, mode);
5655
}
5756
}
@@ -73,6 +72,8 @@ public Stream<Path> resolvePaths(PathLookup pathLookup) {
7372
return Stream.of(pathLookup.configDir().resolve(relativePath));
7473
case DATA:
7574
return Arrays.stream(pathLookup.dataDirs()).map(d -> d.resolve(relativePath));
75+
case HOME:
76+
return Stream.of(pathLookup.homeDir().resolve(relativePath));
7677
default:
7778
throw new IllegalArgumentException();
7879
}
@@ -90,12 +91,14 @@ private static Mode parseMode(String mode) {
9091
}
9192

9293
private static BaseDir parseBaseDir(String baseDir) {
93-
if (baseDir.equals("config")) {
94-
return BaseDir.CONFIG;
95-
} else if (baseDir.equals("data")) {
96-
return BaseDir.DATA;
97-
}
98-
throw new PolicyValidationException("invalid relative directory: " + baseDir + ", valid values: [config, data]");
94+
return switch (baseDir) {
95+
case "config" -> BaseDir.CONFIG;
96+
case "data" -> BaseDir.DATA;
97+
case "home" -> BaseDir.HOME;
98+
default -> throw new PolicyValidationException(
99+
"invalid relative directory: " + baseDir + ", valid values: [config, data, home]"
100+
);
101+
};
99102
}
100103

101104
@ExternalEntitlement(parameterNames = { "paths" }, esModulesOnly = false)

0 commit comments

Comments
 (0)