Author: toad
Date: 2009-01-16 22:15:24 +0000 (Fri, 16 Jan 2009)
New Revision: 25098

Modified:
   trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
Log:
If a block is too small, and it isn't the last block, or ignoreLastDataBlock 
isn't set, fail the splitfile immediately.


Modified: trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java 
2009-01-16 22:09:35 UTC (rev 25097)
+++ trunk/freenet/src/freenet/client/async/SplitFileFetcherSegment.java 
2009-01-16 22:15:24 UTC (rev 25098)
@@ -203,8 +203,13 @@
                        if(startedDecode) {
                                return;
                        } else {
+                               boolean tooSmall = data.size() < 
CHKBlock.DATA_LENGTH;
                                // Don't count the last data block, since we 
can't use it in FEC decoding.
-                               if(!(ignoreLastDataBlock && blockNo == 
dataKeys.length - 1 && data.size() != CHKBlock.DATA_LENGTH))
+                               if(tooSmall && (!ignoreLastDataBlock) || 
(blockNo != dataKeys.length - 1)) {
+                                       fail(new 
FetchException(FetchException.INVALID_METADATA, "Block too small in splitfile: 
block "+blockNo+" of "+dataKeys.length+" data keys, "+checkKeys.length+" check 
keys"));
+                                       return;
+                               }
+                               if(!(ignoreLastDataBlock && blockNo == 
dataKeys.length - 1 && tooSmall))
                                        fetchedBlocks++;
                                else
                                        // This block is not going to be 
fetched, and because of the insertion format. 

_______________________________________________
cvs mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/cvs

Reply via email to