Author: nextgens
Date: 2006-08-27 18:59:16 +0000 (Sun, 27 Aug 2006)
New Revision: 10286

Modified:
   trunk/freenet/src/freenet/clients/http/filter/GenericReadFilterCallback.java
Log:
Whitelist allowed protocols ... I might have forgotten a few

Modified: 
trunk/freenet/src/freenet/clients/http/filter/GenericReadFilterCallback.java
===================================================================
--- 
trunk/freenet/src/freenet/clients/http/filter/GenericReadFilterCallback.java    
    2006-08-27 18:28:32 UTC (rev 10285)
+++ 
trunk/freenet/src/freenet/clients/http/filter/GenericReadFilterCallback.java    
    2006-08-27 18:59:16 UTC (rev 10286)
@@ -5,6 +5,7 @@
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.net.URLEncoder;
+import java.util.HashSet;

 import freenet.clients.http.HTTPRequest;
 import freenet.keys.FreenetURI;
@@ -14,6 +15,21 @@

 public class GenericReadFilterCallback implements FilterCallback {
        public static final String magicHTTPEscapeString = "_CHECKED_HTTP_";
+       public static final HashSet allowedProtocols;
+       
+       static {
+               allowedProtocols = new HashSet();
+               allowedProtocols.add("http");
+               allowedProtocols.add("https");
+               allowedProtocols.add("ftp");
+               allowedProtocols.add("mailto");
+               allowedProtocols.add("nntp");
+               allowedProtocols.add("news");
+               allowedProtocols.add("snews");
+               allowedProtocols.add("about");
+               allowedProtocols.add("irc");
+               // file:// ?
+       }

        private URI baseURI;
        private final FoundURICallback cb;
@@ -112,11 +128,11 @@
                } catch (MalformedURLException e) {
                        // Not a FreenetURI
                }
-
-               // REDFLAG:     FIXME: check if it's an authorized protocol
-               return 
"/?"+GenericReadFilterCallback.magicHTTPEscapeString+"="+uri;    

-               //return null;
+               
if(GenericReadFilterCallback.allowedProtocols.contains(uri.getScheme()))
+                       return 
"/?"+GenericReadFilterCallback.magicHTTPEscapeString+"="+uri;    
+               else
+                       return null;
        }

        private String finishProcess(HTTPRequest req, String overrideType, 
String path, URI u, boolean noRelative) {


Reply via email to