From a5a5f7dbde1c7224cefc4d80de33cb2ae223ffc0 Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Sat, 4 Aug 2018 14:50:33 +0000
Subject: [PATCH] I2NP: Don't call toLong() for 1 byte

---
 .../net/i2p/data/i2np/DatabaseSearchReplyMessage.java    | 3 +--
 .../java/src/net/i2p/data/i2np/DeliveryInstructions.java | 3 +--
 .../java/src/net/i2p/data/i2np/FastI2NPMessageImpl.java  | 3 +--
 router/java/src/net/i2p/data/i2np/I2NPMessageImpl.java   | 9 +++------
 .../net/i2p/data/i2np/VariableTunnelBuildMessage.java    | 3 +--
 .../i2p/data/i2np/VariableTunnelBuildReplyMessage.java   | 2 +-
 6 files changed, 8 insertions(+), 15 deletions(-)

diff --git a/router/java/src/net/i2p/data/i2np/DatabaseSearchReplyMessage.java b/router/java/src/net/i2p/data/i2np/DatabaseSearchReplyMessage.java
index 1df280349e..5ea08428a9 100644
--- a/router/java/src/net/i2p/data/i2np/DatabaseSearchReplyMessage.java
+++ b/router/java/src/net/i2p/data/i2np/DatabaseSearchReplyMessage.java
@@ -103,8 +103,7 @@ public class DatabaseSearchReplyMessage extends FastI2NPMessageImpl {
 
         System.arraycopy(_key.getData(), 0, out, curIndex, Hash.HASH_LENGTH);
         curIndex += Hash.HASH_LENGTH;
-        DataHelper.toLong(out, curIndex, 1, _peerHashes.size());
-        curIndex++;
+        out[curIndex++] = (byte) _peerHashes.size();
         for (int i = 0; i < getNumReplies(); i++) {
             System.arraycopy(getReply(i).getData(), 0, out, curIndex, Hash.HASH_LENGTH);
             curIndex += Hash.HASH_LENGTH;
diff --git a/router/java/src/net/i2p/data/i2np/DeliveryInstructions.java b/router/java/src/net/i2p/data/i2np/DeliveryInstructions.java
index 703f43ef29..83a1ac39b2 100644
--- a/router/java/src/net/i2p/data/i2np/DeliveryInstructions.java
+++ b/router/java/src/net/i2p/data/i2np/DeliveryInstructions.java
@@ -411,8 +411,7 @@ public class DeliveryInstructions extends DataStructureImpl {
         //    _log.debug("Write flags: " + flags + " mode: " + getDeliveryMode() 
         //               + " =?= " + flagMode(flags));
         int origOffset = offset;
-        DataHelper.toLong(target, offset, 1, flags);
-        offset++;
+        target[offset++] = (byte) flags;
         offset += getAdditionalInfo(target, offset);
         return offset - origOffset;
     }
diff --git a/router/java/src/net/i2p/data/i2np/FastI2NPMessageImpl.java b/router/java/src/net/i2p/data/i2np/FastI2NPMessageImpl.java
index 63e64fa65c..bbf6f78fa1 100644
--- a/router/java/src/net/i2p/data/i2np/FastI2NPMessageImpl.java
+++ b/router/java/src/net/i2p/data/i2np/FastI2NPMessageImpl.java
@@ -150,8 +150,7 @@ public abstract class FastI2NPMessageImpl extends I2NPMessageImpl {
             }
             int payloadLen = writtenLen - HEADER_LENGTH;
             int off = 0;
-            DataHelper.toLong(buffer, off, 1, getType());
-            off += 1;
+            buffer[off++] = (byte) getType();
             DataHelper.toLong(buffer, off, 4, _uniqueId);
             off += 4;
             DataHelper.toLong(buffer, off, DataHelper.DATE_LENGTH, _expiration);
diff --git a/router/java/src/net/i2p/data/i2np/I2NPMessageImpl.java b/router/java/src/net/i2p/data/i2np/I2NPMessageImpl.java
index ba20bf2715..fa6fe8784c 100644
--- a/router/java/src/net/i2p/data/i2np/I2NPMessageImpl.java
+++ b/router/java/src/net/i2p/data/i2np/I2NPMessageImpl.java
@@ -257,8 +257,7 @@ public abstract class I2NPMessageImpl extends DataStructureImpl implements I2NPM
             byte[] h = SimpleByteCache.acquire(Hash.HASH_LENGTH);
             _context.sha().calculateHash(buffer, off + HEADER_LENGTH, payloadLen, h, 0);
 
-            DataHelper.toLong(buffer, off, 1, getType());
-            off++;
+            buffer[off++] = (byte) getType();
 
             // Lazy initialization of value
             if (_uniqueId < 0) {
@@ -300,8 +299,7 @@ public abstract class I2NPMessageImpl extends DataStructureImpl implements I2NPM
     public int toRawByteArray(byte buffer[]) {
         try {
             int off = 0;
-            DataHelper.toLong(buffer, off, 1, getType());
-            off += 1;
+            buffer[off++] = (byte) getType();
             // January 19 2038? No, unsigned, good until Feb. 7 2106
             // in seconds, round up so we don't lose time every hop
             DataHelper.toLong(buffer, off, 4, (_expiration + 500) / 1000);
@@ -325,8 +323,7 @@ public abstract class I2NPMessageImpl extends DataStructureImpl implements I2NPM
      */
     public int toRawByteArrayNTCP2(byte buffer[], int off) {
         try {
-            DataHelper.toLong(buffer, off, 1, getType());
-            off += 1;
+            buffer[off++] = (byte) getType();
             // Lazy initialization of value
             if (_uniqueId < 0) {
                 _uniqueId = _context.random().nextLong(MAX_ID_VALUE);
diff --git a/router/java/src/net/i2p/data/i2np/VariableTunnelBuildMessage.java b/router/java/src/net/i2p/data/i2np/VariableTunnelBuildMessage.java
index 52aa565de7..3682a986e3 100644
--- a/router/java/src/net/i2p/data/i2np/VariableTunnelBuildMessage.java
+++ b/router/java/src/net/i2p/data/i2np/VariableTunnelBuildMessage.java
@@ -1,7 +1,6 @@
 package net.i2p.data.i2np;
 
 import net.i2p.I2PAppContext;
-import net.i2p.data.DataHelper;
 
 /**
  * Variable number of records.
@@ -46,7 +45,7 @@ public class VariableTunnelBuildMessage extends TunnelBuildMessage {
             throw new I2NPMessageException("Not large enough (too short by " + remaining + ")");
         if (RECORD_COUNT <= 0 || RECORD_COUNT > MAX_RECORD_COUNT)
             throw new I2NPMessageException("Bad record count " + RECORD_COUNT);
-        DataHelper.toLong(out, curIndex++, 1, RECORD_COUNT);
+        out[curIndex++] = (byte) RECORD_COUNT;
         // can't call super, written length check will fail
         //return super.writeMessageBody(out, curIndex + 1);
         for (int i = 0; i < RECORD_COUNT; i++) {
diff --git a/router/java/src/net/i2p/data/i2np/VariableTunnelBuildReplyMessage.java b/router/java/src/net/i2p/data/i2np/VariableTunnelBuildReplyMessage.java
index 575f556300..32b4385531 100644
--- a/router/java/src/net/i2p/data/i2np/VariableTunnelBuildReplyMessage.java
+++ b/router/java/src/net/i2p/data/i2np/VariableTunnelBuildReplyMessage.java
@@ -48,7 +48,7 @@ public class VariableTunnelBuildReplyMessage extends TunnelBuildReplyMessage {
             throw new I2NPMessageException("Not large enough (too short by " + remaining + ")");
         if (RECORD_COUNT <= 0 || RECORD_COUNT > MAX_RECORD_COUNT)
             throw new I2NPMessageException("Bad record count " + RECORD_COUNT);
-        DataHelper.toLong(out, curIndex++, 1, RECORD_COUNT);
+        out[curIndex++] = (byte) RECORD_COUNT;
         // can't call super, written length check will fail
         //return super.writeMessageBody(out, curIndex + 1);
         for (int i = 0; i < RECORD_COUNT; i++) {
-- 
GitLab