Author: nextgens
Date: 2007-05-24 11:46:45 +0000 (Thu, 24 May 2007)
New Revision: 13355

Modified:
   trunk/freenet/src/freenet/pluginmanager/PluginManager.java
Log:
Pluginmanager: be symlink attack proof

Modified: trunk/freenet/src/freenet/pluginmanager/PluginManager.java
===================================================================
--- trunk/freenet/src/freenet/pluginmanager/PluginManager.java  2007-05-24 
09:48:41 UTC (rev 13354)
+++ trunk/freenet/src/freenet/pluginmanager/PluginManager.java  2007-05-24 
11:46:45 UTC (rev 13355)
@@ -353,15 +353,16 @@
                                return null;
                 }

-                // Shall we prevent overwriting ?
-                File f = new File("plugins/" + pluginname + ".jar");
-                if(f.exists()) f.delete();
+                File finalFile = new File("plugins/" + pluginname + ".jar");
+                File f = File.createTempFile(pluginname, ".tmp", finalFile);
                 os = new BufferedOutputStream(new FileOutputStream(f));
                 int b;
                 while ((b = dis.read()) != -1) {
                         os.write(b);
                 }
+                f.renameTo(finalFile);
                        filename = "*@file://" + FileUtil.getCanonicalFile(f);
+                       if(logMINOR) Logger.minor(this, "Rewritten to 
"+filename);
                        } catch (MalformedURLException mue) {
                                Logger.error(this, "MAlformedURLException has 
occured : "+ mue, mue);
                                return null;


Reply via email to