You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by co...@apache.org on 2019/12/20 12:44:33 UTC

[cxf] 01/06: Handle Java 2 security issue in ForkJoinPool

This is an automated email from the ASF dual-hosted git repository.

coheigea pushed a commit to branch 3.3.x-fixes
in repository https://gitbox.apache.org/repos/asf/cxf.git

commit 2a9379a737768c43db299bf1daf97a9c35360771
Author: Andy McCright <j....@gmail.com>
AuthorDate: Mon Dec 16 10:40:38 2019 -0600

    Handle Java 2 security issue in ForkJoinPool
    
    Signed-off-by: Andy McCright <j....@gmail.com>
    (cherry picked from commit 471bc4144f8e86a09daf80c7657d4a37ebef2b15)
---
 .../org/apache/cxf/microprofile/client/MPRestClientCallback.java | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/rt/rs/microprofile-client/src/main/java/org/apache/cxf/microprofile/client/MPRestClientCallback.java b/rt/rs/microprofile-client/src/main/java/org/apache/cxf/microprofile/client/MPRestClientCallback.java
index af61061..a99365f 100644
--- a/rt/rs/microprofile-client/src/main/java/org/apache/cxf/microprofile/client/MPRestClientCallback.java
+++ b/rt/rs/microprofile-client/src/main/java/org/apache/cxf/microprofile/client/MPRestClientCallback.java
@@ -20,6 +20,8 @@
 package org.apache.cxf.microprofile.client;
 
 import java.lang.reflect.Type;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
 import java.util.concurrent.CancellationException;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.CompletionException;
@@ -42,7 +44,12 @@ public class MPRestClientCallback<T> extends JaxrsClientCallback<T> {
                                 Type outGenericType) {
         super(handler, responseClass, outGenericType);
         ExecutorService es = outMessage.get(ExecutorService.class);
-        executor = es != null ? es : ForkJoinPool.commonPool();
+        if (es == null) {
+            es = AccessController.doPrivileged((PrivilegedAction<ExecutorService>)() -> {
+                return ForkJoinPool.commonPool();
+            });
+        }
+        executor = es;
     }
 
     @SuppressWarnings("unchecked")