Author: toad
Date: 2008-02-29 19:58:20 +0000 (Fri, 29 Feb 2008)
New Revision: 18263

Modified:
   trunk/freenet/src/freenet/node/PeerNode.java
Log:
Simplify so off-by-one errors don't happen again

Modified: trunk/freenet/src/freenet/node/PeerNode.java
===================================================================
--- trunk/freenet/src/freenet/node/PeerNode.java        2008-02-29 19:56:56 UTC 
(rev 18262)
+++ trunk/freenet/src/freenet/node/PeerNode.java        2008-02-29 19:58:20 UTC 
(rev 18263)
@@ -2055,8 +2055,10 @@
                // Lookup table for groups.
                DSAGroup group = null;
                int firstByte = data[offset];
+               offset++;
+               length--;
                if((firstByte & 2) == 2) {
-                       int groupIndex = Fields.bytesToInt(data, offset + 1);
+                       int groupIndex = Fields.bytesToInt(data, offset);
                        offset += 4;
                        length -= 4;
                        group = Global.getGroup(groupIndex);
@@ -2066,9 +2068,9 @@
                if((firstByte & 1) == 1) {
                        // Gzipped
                        Inflater i = new Inflater();
-                       i.setInput(data, offset + 1, length - 1);
+                       i.setInput(data, offset, length);
                        byte[] output = new byte[4096];
-                       int outputPointer = 1;
+                       int outputPointer = 0;
                        while(true) {
                                try {
                                        int x = i.inflate(output, 
outputPointer, output.length - outputPointer);
@@ -2093,7 +2095,7 @@
                if(logMINOR)
                        Logger.minor(PeerNode.class, "Reference: " + new 
String(data, offset, length) + '(' + length + ')');
                // Now decode it
-               ByteArrayInputStream bais = new ByteArrayInputStream(data, 
offset + 1, length - 1);
+               ByteArrayInputStream bais = new ByteArrayInputStream(data, 
offset, length);
                InputStreamReader isr;
                try {
                        isr = new InputStreamReader(bais, "UTF-8");


Reply via email to