aboutsummaryrefslogtreecommitdiffstats
path: root/netx/net/sourceforge/jnlp/cache/ResourceTracker.java
diff options
context:
space:
mode:
authorDeepak Bhole <[email protected]>2011-05-27 18:01:27 -0400
committerDeepak Bhole <[email protected]>2011-05-27 18:01:27 -0400
commitf6f981f1b19e568304d982b4ec8ae42af478a7cd (patch)
treea74c47050fac1df5973b8073dce2eb6089c5015d /netx/net/sourceforge/jnlp/cache/ResourceTracker.java
parentd11aa0d9adb290698c8c073d95e7a3b2374d2e63 (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.java18
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();