Skip to content

Commit d9d1198

Browse files
committed
Fix FileAccessTree for prefixes that aren't parents
1 parent cc6e84e commit d9d1198

File tree

2 files changed

+5
-1
lines changed

2 files changed

+5
-1
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ private static boolean checkPath(String path, String[] paths) {
6464
int ndx = Arrays.binarySearch(paths, path);
6565
if (ndx < -1) {
6666
String maybeParent = paths[-ndx - 2];
67-
return path.startsWith(maybeParent);
67+
return path.startsWith(maybeParent) && path.charAt(maybeParent.length()) == '/';
6868
}
6969
return ndx >= 0;
7070
}

libs/entitlement/src/test/java/org/elasticsearch/entitlement/runtime/policy/FileAccessTreeTests.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,9 @@ public void testRead() {
4141
var tree = FileAccessTree.of(List.of(entitlement("foo", "read")));
4242
assertThat(tree.canRead(path("foo")), is(true));
4343
assertThat(tree.canRead(path("foo/subdir")), is(true));
44+
assertThat(tree.canRead(path("food")), is(false));
4445
assertThat(tree.canWrite(path("foo")), is(false));
46+
assertThat(tree.canWrite(path("food")), is(false));
4547

4648
assertThat(tree.canRead(path("before")), is(false));
4749
assertThat(tree.canRead(path("later")), is(false));
@@ -51,7 +53,9 @@ public void testWrite() {
5153
var tree = FileAccessTree.of(List.of(entitlement("foo", "read_write")));
5254
assertThat(tree.canWrite(path("foo")), is(true));
5355
assertThat(tree.canWrite(path("foo/subdir")), is(true));
56+
assertThat(tree.canWrite(path("food")), is(false));
5457
assertThat(tree.canRead(path("foo")), is(true));
58+
assertThat(tree.canRead(path("food")), is(false));
5559

5660
assertThat(tree.canWrite(path("before")), is(false));
5761
assertThat(tree.canWrite(path("later")), is(false));

0 commit comments

Comments
 (0)