Author: nextgens
Date: 2008-08-06 17:06:48 +0000 (Wed, 06 Aug 2008)
New Revision: 21638
Modified:
trunk/freenet/src/freenet/node/PeerNode.java
Log:
Fix toad's unzipping code: we shouldn't receive any reference bigger than 4096
bytes anyway.
Modified: trunk/freenet/src/freenet/node/PeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerNode.java 2008-08-06 16:59:32 UTC
(rev 21637)
+++ trunk/freenet/src/freenet/node/PeerNode.java 2008-08-06 17:06:48 UTC
(rev 21638)
@@ -2267,33 +2267,23 @@
if(group == null) throw new FSParseException("Unknown
group number "+groupIndex);
if(logMINOR)
Logger.minor(PeerNode.class, "DSAGroup set to
"+group.fingerprintToString()+ " using the group-index "+groupIndex);
- System.out.println("group");
}
// Is it compressed?
if((firstByte & 1) == 1) {
- // Gzipped
- Inflater i = new Inflater();
- i.setInput(data, offset, length);
- byte[] output = new byte[4096];
- int outputPointer = 0;
- while(true) {
- try {
- int x = i.inflate(output,
outputPointer, output.length - outputPointer);
- if(x == output.length - outputPointer) {
- // More to decompress!
- byte[] newOutput = new
byte[output.length * 2];
- System.arraycopy(output, 0,
newOutput, 0, output.length);
- continue;
- } else {
- // Finished
- data = output;
- offset = 0;
- length = outputPointer + x;
- break;
- }
- } catch(DataFormatException e) {
- throw new FSParseException("Invalid
compressed data");
- }
+ try {
+ // Gzipped
+ Inflater i = new Inflater();
+ i.setInput(data, offset, length);
+ // We shouldn't ever need a 4096 bytes long ref!
+ byte[] output = new byte[4096];
+ length = i.inflate(output, 0, output.length);
+ // Finished
+ data = output;
+ offset = 0;
+ if(logMINOR)
+ Logger.minor(PeerNode.class, "We have
decompressed a "+length+" bytes big reference.");
+ } catch(DataFormatException e) {
+ throw new FSParseException("Invalid compressed
data");
}
}
if(logMINOR)