diff options
author | Deepak Bhole <[email protected]> | 2011-05-27 18:01:27 -0400 |
---|---|---|
committer | Deepak Bhole <[email protected]> | 2011-05-27 18:01:27 -0400 |
commit | f6f981f1b19e568304d982b4ec8ae42af478a7cd (patch) | |
tree | a74c47050fac1df5973b8073dce2eb6089c5015d /netx/net/sourceforge/jnlp/cache/ResourceTracker.java | |
parent | d11aa0d9adb290698c8c073d95e7a3b2374d2e63 (diff) |
Fix PR723: AccessControlException while downloading resource
Diffstat (limited to 'netx/net/sourceforge/jnlp/cache/ResourceTracker.java')
-rw-r--r-- | netx/net/sourceforge/jnlp/cache/ResourceTracker.java | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/netx/net/sourceforge/jnlp/cache/ResourceTracker.java b/netx/net/sourceforge/jnlp/cache/ResourceTracker.java index 61bebce..6bf2ae7 100644 --- a/netx/net/sourceforge/jnlp/cache/ResourceTracker.java +++ b/netx/net/sourceforge/jnlp/cache/ResourceTracker.java @@ -28,6 +28,8 @@ import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; +import java.security.AccessController; +import java.security.PrivilegedAction; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ConcurrentHashMap; @@ -1078,7 +1080,7 @@ public class ResourceTracker { /** * This class downloads and initializes the queued resources. */ - class Downloader implements Runnable { + private class Downloader implements Runnable { Resource resource = null; public void run() { @@ -1100,7 +1102,19 @@ public class ResourceTracker { } try { - processResource(resource); + + // Resource processing involves writing to files + // (cache entry trackers, the files themselves, etc.) + // and it therefore needs to be privileged + + final Resource fResource = resource; + AccessController.doPrivileged(new PrivilegedAction<Void>() { + public Void run() { + processResource(fResource); + return null; + } + }); + } catch (Exception ex) { if (JNLPRuntime.isDebug()) ex.printStackTrace(); |