Author: toad
Date: 2008-02-04 16:23:18 +0000 (Mon, 04 Feb 2008)
New Revision: 17506

Modified:
   trunk/freenet/src/freenet/node/NodeDispatcher.java
   trunk/freenet/src/freenet/node/ResettingHTLProbeRequestHandler.java
Log:
Reject probe requests with invalid targets.

Modified: trunk/freenet/src/freenet/node/NodeDispatcher.java
===================================================================
--- trunk/freenet/src/freenet/node/NodeDispatcher.java  2008-02-04 14:32:22 UTC 
(rev 17505)
+++ trunk/freenet/src/freenet/node/NodeDispatcher.java  2008-02-04 16:23:18 UTC 
(rev 17506)
@@ -379,7 +379,18 @@
                        }
                        return true;
                }
-               ResettingHTLProbeRequestHandler.start(m, source, node);
+               double target = m.getDouble(DMT.TARGET_LOCATION);
+               if(target > 1.0 || target < 0.0) {
+                       Logger.normal(this, "Rejecting invalid 
(target="+target+") probe request from "+source.getPeer());
+                       Message rejected = DMT.createFNPRejectedOverload(id, 
true);
+                       try {
+                               source.sendAsync(rejected, null, 0, null);
+                       } catch (NotConnectedException e) {
+                               Logger.normal(this, "Rejecting (invalid) insert 
request from "+source.getPeer()+": "+e);
+                       }
+                       return true;
+               }
+               ResettingHTLProbeRequestHandler.start(m, source, node, target);
                return true;
        }


Modified: trunk/freenet/src/freenet/node/ResettingHTLProbeRequestHandler.java
===================================================================
--- trunk/freenet/src/freenet/node/ResettingHTLProbeRequestHandler.java 
2008-02-04 14:32:22 UTC (rev 17505)
+++ trunk/freenet/src/freenet/node/ResettingHTLProbeRequestHandler.java 
2008-02-04 16:23:18 UTC (rev 17506)
@@ -26,9 +26,8 @@
                this.sender = sender;
        }

-       static void start(Message m, PeerNode source, Node n) {
+       static void start(Message m, PeerNode source, Node n, double target) {
                long uid = m.getLong(DMT.UID);
-               double target = m.getDouble(DMT.TARGET_LOCATION);
                double nearestLoc = m.getDouble(DMT.NEAREST_LOCATION);
                double best = m.getDouble(DMT.BEST_LOCATION);
                short htl = m.getShort(DMT.HTL);


Reply via email to