You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by gn...@apache.org on 2009/08/17 09:33:07 UTC

svn commit: r804883 - in /mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/common: Mac.java mac/BaseMac.java session/AbstractSession.java util/Buffer.java

Author: gnodet
Date: Mon Aug 17 07:33:06 2009
New Revision: 804883

URL: http://svn.apache.org/viewvc?rev=804883&view=rev
Log:
SSHD-33: SSH uint32, sequence number wrapping

Modified:
    mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/common/Mac.java
    mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/common/mac/BaseMac.java
    mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/common/session/AbstractSession.java
    mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/common/util/Buffer.java

Modified: mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/common/Mac.java
URL: http://svn.apache.org/viewvc/mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/common/Mac.java?rev=804883&r1=804882&r2=804883&view=diff
==============================================================================
--- mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/common/Mac.java (original)
+++ mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/common/Mac.java Mon Aug 17 07:33:06 2009
@@ -32,7 +32,7 @@
 
     void update(byte[] foo, int start, int len);
 
-    void update(int foo);
+    void updateUInt(long foo);
 
     void doFinal(byte[] buf, int offset) throws Exception;
 }

Modified: mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/common/mac/BaseMac.java
URL: http://svn.apache.org/viewvc/mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/common/mac/BaseMac.java?rev=804883&r1=804882&r2=804883&view=diff
==============================================================================
--- mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/common/mac/BaseMac.java (original)
+++ mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/common/mac/BaseMac.java Mon Aug 17 07:33:06 2009
@@ -59,7 +59,7 @@
         mac.init(skey);
     }
 
-    public void update(int i) {
+    public void updateUInt(long i) {
         tmp[0] = (byte) (i >>> 24);
         tmp[1] = (byte) (i >>> 16);
         tmp[2] = (byte) (i >>> 8);

Modified: mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/common/session/AbstractSession.java
URL: http://svn.apache.org/viewvc/mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/common/session/AbstractSession.java?rev=804883&r1=804882&r2=804883&view=diff
==============================================================================
--- mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/common/session/AbstractSession.java (original)
+++ mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/common/session/AbstractSession.java Mon Aug 17 07:33:06 2009
@@ -117,8 +117,8 @@
     protected byte[] inMacResult;
     protected Compression outCompression;
     protected Compression inCompression;
-    protected int seqi;
-    protected int seqo;
+    protected long seqi;
+    protected long seqo;
     protected Buffer decoderBuffer = new Buffer();
     protected Buffer uncompressBuffer;
     protected int decoderState;
@@ -386,7 +386,7 @@
                 int macSize = outMac.getBlockSize();
                 int l = buffer.wpos();
                 buffer.wpos(l + macSize);
-                outMac.update(seqo);
+                outMac.updateUInt(seqo);
                 outMac.update(buffer.array(), off, l);
                 outMac.doFinal(buffer.array(), l);
             }
@@ -395,7 +395,7 @@
                 outCipher.update(buffer.array(), off, len + 4);
             }
             // Increment packet id
-            seqo++;
+            seqo = (seqo + 1) & 0xffffffffL;
             // Make buffer ready to be read
             buffer.rpos(off);
         } catch (SshException e) {
@@ -452,7 +452,7 @@
                     // Check the mac of the packet
                     if (inMac != null) {
                         // Update mac with packet id
-                        inMac.update(seqi);
+                        inMac.updateUInt(seqi);
                         // Update mac with packet data
                         inMac.update(data, 0, decoderLength + 4);
                         // Compute mac result
@@ -464,7 +464,7 @@
                         }
                     }
                     // Increment incoming packet sequence number
-                    seqi++;
+                    seqi = (seqi + 1) & 0xffffffffL;
                     // Get padding
                     byte pad = decoderBuffer.getByte();
                     Buffer buf;

Modified: mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/common/util/Buffer.java
URL: http://svn.apache.org/viewvc/mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/common/util/Buffer.java?rev=804883&r1=804882&r2=804883&view=diff
==============================================================================
--- mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/common/util/Buffer.java (original)
+++ mina/sshd/trunk/sshd-core/src/main/java/org/apache/sshd/common/util/Buffer.java Mon Aug 17 07:33:06 2009
@@ -136,12 +136,17 @@
     }
 
     public int getInt() {
+        return (int) getUInt();
+    }
+    
+    public long getUInt()
+    {
         ensureAvailable(4);
-        int i = ((data[rpos++] << 24) & 0xff000000)|
-                ((data[rpos++] << 16) & 0x00ff0000)|
-                ((data[rpos++] <<  8) & 0x0000ff00)|
-                ((data[rpos++]      ) & 0x000000ff);
-        return i;
+        long l = ((data[rpos++] << 24) & 0xff000000L)|
+                 ((data[rpos++] << 16) & 0x00ff0000L)|
+                 ((data[rpos++] <<  8) & 0x0000ff00L)|
+                 ((data[rpos++]      ) & 0x000000ffL);
+        return l;        
     }
 
     public boolean getBoolean() {
@@ -250,7 +255,7 @@
         wpos += r;
     }
 
-    public void putInt(int i) {
+    public void putInt(long i) {
         ensureCapacity(4);
         data[wpos++] = (byte) (i >> 24);
         data[wpos++] = (byte) (i >> 16);