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);