You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by re...@apache.org on 2023/09/22 01:45:02 UTC

[cxf] 03/06: [CXF-8933]:Add doPrivileged block to ProxyFactoryProxySelector.select()in HttpClientHTTPConduit

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

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

commit f854e9db5d8d22939e38f48b21bae74d86487279
Author: Jim Ma <em...@apache.org>
AuthorDate: Thu Sep 21 14:27:47 2023 +0800

    [CXF-8933]:Add doPrivileged block to ProxyFactoryProxySelector.select()in HttpClientHTTPConduit
    
    (cherry picked from commit a690fd59df8fc88f2f1ef1405d5533216d68070a)
---
 .../cxf/transport/http/HttpClientHTTPConduit.java    | 20 +++++++++++++++++++-
 1 file changed, 19 insertions(+), 1 deletion(-)

diff --git a/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HttpClientHTTPConduit.java b/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HttpClientHTTPConduit.java
index 4cab8ae253..d99309b3ca 100644
--- a/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HttpClientHTTPConduit.java
+++ b/rt/transports/http/src/main/java/org/apache/cxf/transport/http/HttpClientHTTPConduit.java
@@ -46,8 +46,11 @@ import java.net.http.HttpResponse.BodyHandlers;
 import java.net.http.HttpTimeoutException;
 import java.nio.ByteBuffer;
 import java.nio.channels.UnresolvedAddressException;
+import java.security.AccessController;
 import java.security.GeneralSecurityException;
 import java.security.Principal;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
 import java.security.cert.Certificate;
 import java.time.Duration;
 import java.util.Arrays;
@@ -327,7 +330,22 @@ public class HttpClientHTTPConduit extends URLConnectionHTTPConduit {
             if (proxy !=  null) {
                 return Arrays.asList(proxy);
             }
-            return ProxySelector.getDefault().select(uri);
+            List<Proxy> listProxy;
+            if (System.getSecurityManager() != null) {
+                try {
+                    listProxy = AccessController.doPrivileged(new PrivilegedExceptionAction<List<Proxy>>() {
+                        @Override
+                        public List<Proxy> run() throws IOException {
+                            return ProxySelector.getDefault().select(uri);
+                        }
+                    });
+                } catch (PrivilegedActionException e) {
+                    throw new RuntimeException(e);
+                }
+            } else {
+                listProxy = ProxySelector.getDefault().select(uri);
+            }
+            return listProxy;
         }
 
         @Override