Skip to content

Commit c7c648f

Browse files
authored
Fix UNIX domain socket permission checks on Windows (#18764)
Signed-off-by: Andriy Redko <[email protected]>
1 parent cb22cb0 commit c7c648f

File tree

1 file changed

+17
-2
lines changed

1 file changed

+17
-2
lines changed

libs/agent-sm/agent/src/main/java/org/opensearch/javaagent/FileInterceptor.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,23 @@ public static void intercept(@Advice.AllArguments Object[] args, @Advice.Origin
7474
final boolean isDelete = isMutating == false ? name.startsWith("delete") : false;
7575

7676
// This is Windows implementation of UNIX Domain Sockets (close)
77-
if (isDelete == true
78-
&& walker.getCallerClass().getName().equalsIgnoreCase("sun.nio.ch.PipeImpl$Initializer$LoopbackConnector") == true) {
77+
boolean isUnixSocketCaller = false;
78+
if (isDelete == true) {
79+
final Collection<Class<?>> chain = walker.walk(StackCallerClassChainExtractor.INSTANCE);
80+
81+
if (walker.getCallerClass().getName().equalsIgnoreCase("sun.nio.ch.PipeImpl$Initializer$LoopbackConnector") == true) {
82+
isUnixSocketCaller = true;
83+
} else {
84+
for (final Class<?> caller : chain) {
85+
if (caller.getName().equalsIgnoreCase("sun.nio.ch.PipeImpl$Initializer$LoopbackConnector")) {
86+
isUnixSocketCaller = true;
87+
break;
88+
}
89+
}
90+
}
91+
}
92+
93+
if (isDelete == true && isUnixSocketCaller == true) {
7994
final NetPermission permission = new NetPermission("accessUnixDomainSocket");
8095
for (ProtectionDomain domain : callers) {
8196
if (!policy.implies(domain, permission)) {

0 commit comments

Comments
 (0)