[freenet-cvs] r12120 - in trunk/freenet/src/freenet: client/async support/io

nextgens at freenetproject.org nextgens at freenetproject.org
Thu Mar 15 17:08:32 UTC 2007


Author: nextgens
Date: 2007-03-15 17:08:31 +0000 (Thu, 15 Mar 2007)
New Revision: 12120

Modified:
   trunk/freenet/src/freenet/client/async/SplitFileFetcher.java
   trunk/freenet/src/freenet/support/io/FileBucket.java
   trunk/freenet/src/freenet/support/io/RandomAccessFileBucket.java
Log:
When we cast the result of an int. multiplication into a long, we have to handle the overflow

Modified: trunk/freenet/src/freenet/client/async/SplitFileFetcher.java
===================================================================
--- trunk/freenet/src/freenet/client/async/SplitFileFetcher.java	2007-03-15 17:05:15 UTC (rev 12119)
+++ trunk/freenet/src/freenet/client/async/SplitFileFetcher.java	2007-03-15 17:08:31 UTC (rev 12120)
@@ -82,7 +82,7 @@
 			if(splitfileDataBlocks[i] == null) throw new MetadataParseException("Null: data block "+i+" of "+splitfileDataBlocks.length);
 		for(int i=0;i<splitfileCheckBlocks.length;i++)
 			if(splitfileCheckBlocks[i] == null) throw new MetadataParseException("Null: check block "+i+" of "+splitfileCheckBlocks.length);
-		long finalLength = splitfileDataBlocks.length * CHKBlock.DATA_LENGTH;
+		long finalLength = splitfileDataBlocks.length * CHKBlock.DATA_LENGTH * 1L;
 		if(finalLength > overrideLength) {
 			if(finalLength - overrideLength > CHKBlock.DATA_LENGTH)
 				throw new FetchException(FetchException.INVALID_METADATA, "Splitfile is "+finalLength+" but length is "+finalLength);

Modified: trunk/freenet/src/freenet/support/io/FileBucket.java
===================================================================
--- trunk/freenet/src/freenet/support/io/FileBucket.java	2007-03-15 17:05:15 UTC (rev 12119)
+++ trunk/freenet/src/freenet/support/io/FileBucket.java	2007-03-15 17:08:31 UTC (rev 12120)
@@ -319,8 +319,8 @@
 		if(length % splitSize > 0) bucketCount++;
 		Bucket[] buckets = new Bucket[bucketCount];
 		for(int i=0;i<buckets.length;i++) {
-			long startAt = i * splitSize;
-			long endAt = Math.min((i+1) * splitSize, length);
+			long startAt = i * splitSize * 1L;
+			long endAt = Math.min(startAt + splitSize * 1L, length);
 			long len = endAt - startAt;
 			buckets[i] = new ReadOnlyFileSliceBucket(file, startAt, len);
 		}

Modified: trunk/freenet/src/freenet/support/io/RandomAccessFileBucket.java
===================================================================
--- trunk/freenet/src/freenet/support/io/RandomAccessFileBucket.java	2007-03-15 17:05:15 UTC (rev 12119)
+++ trunk/freenet/src/freenet/support/io/RandomAccessFileBucket.java	2007-03-15 17:08:31 UTC (rev 12120)
@@ -205,10 +205,10 @@
         Bucket[] ret = new Bucket[blocks];
         
         for (int i = 0; i < blocks; i++) {
-            final long localOffset = i * blockSize + offset;
+            final long localOffset = i * blockSize * 1L + offset;
             int blockLen = blockSize;
             if (i == nBlocks - 1) {
-                blockLen = (int) (length - (nBlocks - 1) * blockSize);
+                blockLen = (int) (length - (nBlocks - 1) * blockSize * 1L);
             }
             ret[i] = new RandomAccessFileBucket(file, localOffset, blockLen, readOnly);
         }




More information about the cvs mailing list