Author: nextgens
Date: 2008-02-09 01:22:11 +0000 (Sat, 09 Feb 2008)
New Revision: 17735
Modified:
trunk/freenet/src/freenet/clients/http/filter/ContentFilter.java
trunk/freenet/src/freenet/clients/http/filter/PNGFilter.java
Log:
PNGFilter: Re-enable the CRC checking of all chunks
Modified: trunk/freenet/src/freenet/clients/http/filter/ContentFilter.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/filter/ContentFilter.java
2008-02-09 01:20:42 UTC (rev 17734)
+++ trunk/freenet/src/freenet/clients/http/filter/ContentFilter.java
2008-02-09 01:22:11 UTC (rev 17735)
@@ -54,7 +54,7 @@
// PNG - has a filter
register(new MIMEType("image/png", "png", new String[0], new
String[0],
- true, false, new PNGFilter(true, true, false)/*
FIXME: reenable when they work */, null, false, false, false, false, true,
false,
+ true, false, new PNGFilter(true, true, true),
null, false, false, false, false, true, false,
l10n("imagePngReadAdvice"),
l10n("imagePngWriteAdvice"), false, null,
null));
Modified: trunk/freenet/src/freenet/clients/http/filter/PNGFilter.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/filter/PNGFilter.java
2008-02-09 01:20:42 UTC (rev 17734)
+++ trunk/freenet/src/freenet/clients/http/filter/PNGFilter.java
2008-02-09 01:22:11 UTC (rev 17735)
@@ -11,19 +11,16 @@
import java.util.HashMap;
import freenet.l10n.L10n;
-import freenet.support.CRC;
import freenet.support.HTMLNode;
import freenet.support.HexUtil;
import freenet.support.Logger;
import freenet.support.LoggerHook.InvalidThresholdException;
-import freenet.support.OutputStreamLogger;
import freenet.support.api.Bucket;
import freenet.support.api.BucketFactory;
import freenet.support.io.ArrayBucketFactory;
import freenet.support.io.BucketTools;
import freenet.support.io.Closer;
import freenet.support.io.FileBucket;
-import freenet.support.io.FileUtil;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
@@ -31,6 +28,7 @@
import java.io.OutputStream;
import java.net.URI;
import java.net.URISyntaxException;
+import java.util.zip.CRC32;
/**
* Content filter for PNG's.
@@ -172,12 +170,12 @@
dos.write(lengthBytes);
if(checkCRCs) {
- long readCRC = ((lengthBytes[0] & 0xff)
<< 24) + ((lengthBytes[1] & 0xff) << 16) + ((lengthBytes[2] & 0xff) << 8) +
(lengthBytes[3] & 0xff);
- byte[] toCheck = new
byte[chunkTypeBytes.length + chunkData.length];
- System.arraycopy(toCheck, 0,
chunkTypeBytes, 0, chunkTypeBytes.length);
- System.arraycopy(toCheck, 0, chunkData,
0, chunkData.length);
- long computedCRC = CRC.crc(toCheck);
-
+ long readCRC = (((lengthBytes[0] &
0xff) << 24) + ((lengthBytes[1] & 0xff) << 16) + ((lengthBytes[2] & 0xff) << 8)
+ (lengthBytes[3] & 0xff)) & 0x00000000ffffffffL;
+ CRC32 crc = new CRC32();
+ crc.update(chunkTypeBytes);
+ crc.update(chunkData);
+ long computedCRC = crc.getValue();
+
if(readCRC != computedCRC) {
skip = true;
if(logMINOR)