From 17d8e91f05f0e5a7b0f4e5d9569795fa1553af21 Mon Sep 17 00:00:00 2001 From: Shikhar Bhushan Date: Sun, 22 May 2011 09:43:19 +0100 Subject: [PATCH] Renamed some Buffer methods to better reflect the SSH datatype --- .../java/net/schmizz/sshj/common/Buffer.java | 26 +++++++++---------- .../sshj/connection/ConnectionImpl.java | 8 +++--- .../connection/channel/AbstractChannel.java | 8 +++--- .../channel/ChannelInputStream.java | 2 +- .../channel/ChannelOutputStream.java | 8 +++--- .../channel/direct/AbstractDirectChannel.java | 10 +++---- .../channel/direct/LocalPortForwarder.java | 4 +-- .../connection/channel/direct/PTYMode.java | 2 +- .../channel/direct/SessionChannel.java | 20 +++++++------- .../forwarded/AbstractForwardedChannel.java | 6 ++--- .../forwarded/RemotePortForwarder.java | 10 +++---- .../channel/forwarded/X11Forwarder.java | 6 ++--- .../net/schmizz/sshj/sftp/FileAttributes.java | 16 ++++++------ .../schmizz/sshj/sftp/RemoteDirectory.java | 2 +- .../net/schmizz/sshj/sftp/RemoteFile.java | 8 +++--- .../java/net/schmizz/sshj/sftp/Request.java | 2 +- .../java/net/schmizz/sshj/sftp/Response.java | 4 +-- .../net/schmizz/sshj/sftp/SFTPEngine.java | 8 +++--- .../net/schmizz/sshj/sftp/SFTPPacket.java | 12 ++++----- .../net/schmizz/sshj/transport/Decoder.java | 2 +- .../net/schmizz/sshj/transport/Encoder.java | 2 +- .../net/schmizz/sshj/transport/Proposal.java | 2 +- .../schmizz/sshj/transport/TransportImpl.java | 8 +++--- .../method/AuthKeyboardInteractive.java | 4 +-- .../net/schmizz/sshj/util/BufferTest.java | 2 +- 25 files changed, 91 insertions(+), 91 deletions(-) diff --git a/src/main/java/net/schmizz/sshj/common/Buffer.java b/src/main/java/net/schmizz/sshj/common/Buffer.java index 7bbe43eb..d5012d54 100644 --- a/src/main/java/net/schmizz/sshj/common/Buffer.java +++ b/src/main/java/net/schmizz/sshj/common/Buffer.java @@ -222,7 +222,7 @@ public class Buffer> { * @return the byte-array read */ public byte[] readBytes() { - int len = readInt(); + int len = readUInt32AsInt(); if (len < 0 || len > 32768) throw new BufferException("Bad item length: " + len); byte[] b = new byte[len]; @@ -251,7 +251,7 @@ public class Buffer> { * @return this */ public T putBytes(byte[] b, int off, int len) { - return putInt(len - off).putRawBytes(b, off, len); + return putUInt32(len - off).putRawBytes(b, off, len); } public void readRawBytes(byte[] buf) { @@ -294,11 +294,11 @@ public class Buffer> { return (T) this; } - public int readInt() { - return (int) readLong(); + public int readUInt32AsInt() { + return (int) readUInt32(); } - public long readLong() { + public long readUInt32() { ensureAvailable(4); return data[rpos++] << 24 & 0xff000000L | data[rpos++] << 16 & 0x00ff0000L | @@ -314,7 +314,7 @@ public class Buffer> { * @return this */ @SuppressWarnings("unchecked") - public T putInt(long uint32) { + public T putUInt32(long uint32) { ensureCapacity(4); if (uint32 < 0 || uint32 > 0xffffffffL) throw new BufferException("Invalid value: " + uint32); @@ -356,10 +356,10 @@ public class Buffer> { int i = foo.length; if ((foo[0] & 0x80) != 0) { i++; - putInt(i); + putUInt32(i); putByte((byte) 0); } else - putInt(i); + putUInt32(i); return putRawBytes(foo); } @@ -367,15 +367,15 @@ public class Buffer> { return readBytes(); } - public long readUINT64() { - long uint64 = (readLong() << 32) + (readLong() & 0xffffffffL); + public long readUInt64() { + long uint64 = (readUInt32() << 32) + (readUInt32() & 0xffffffffL); if (uint64 < 0) throw new BufferException("Cannot handle values > Long.MAX_VALUE"); return uint64; } @SuppressWarnings("unchecked") - public T putUINT64(long uint64) { + public T putUInt64(long uint64) { if (uint64 < 0) throw new BufferException("Invalid value: " + uint64); data[wpos++] = (byte) (uint64 >> 56); @@ -395,7 +395,7 @@ public class Buffer> { * @return the string as a Java {@code String} */ public String readString() { - int len = readInt(); + int len = readUInt32AsInt(); if (len < 0 || len > 32768) throw new BufferException("Bad item length: " + len); ensureAvailable(len); @@ -444,7 +444,7 @@ public class Buffer> { public T putSensitiveString(char[] str) { if (str == null) return putString(""); - putInt(str.length); + putUInt32(str.length); ensureCapacity(str.length); for (char c : str) data[wpos++] = (byte) c; diff --git a/src/main/java/net/schmizz/sshj/connection/ConnectionImpl.java b/src/main/java/net/schmizz/sshj/connection/ConnectionImpl.java index 6144f6c8..4971356f 100644 --- a/src/main/java/net/schmizz/sshj/connection/ConnectionImpl.java +++ b/src/main/java/net/schmizz/sshj/connection/ConnectionImpl.java @@ -103,7 +103,7 @@ public class ConnectionImpl private Channel getChannel(SSHPacket buffer) throws ConnectionException { - int recipient = buffer.readInt(); + int recipient = buffer.readUInt32AsInt(); Channel channel = get(recipient); if (channel != null) return channel; @@ -218,7 +218,7 @@ public class ConnectionImpl openers.get(type).handleOpen(buf); else { log.warn("No opener found for `{}` CHANNEL_OPEN request -- rejecting", type); - sendOpenFailure(buf.readInt(), OpenFailException.Reason.UNKNOWN_CHANNEL_TYPE, ""); + sendOpenFailure(buf.readUInt32AsInt(), OpenFailException.Reason.UNKNOWN_CHANNEL_TYPE, ""); } } @@ -226,8 +226,8 @@ public class ConnectionImpl public void sendOpenFailure(int recipient, Reason reason, String message) throws TransportException { trans.write(new SSHPacket(Message.CHANNEL_OPEN_FAILURE) - .putInt(recipient) - .putInt(reason.getCode()) + .putUInt32(recipient) + .putUInt32(reason.getCode()) .putString(message)); } diff --git a/src/main/java/net/schmizz/sshj/connection/channel/AbstractChannel.java b/src/main/java/net/schmizz/sshj/connection/channel/AbstractChannel.java index f1950692..bcb153ae 100644 --- a/src/main/java/net/schmizz/sshj/connection/channel/AbstractChannel.java +++ b/src/main/java/net/schmizz/sshj/connection/channel/AbstractChannel.java @@ -183,11 +183,11 @@ public abstract class AbstractChannel break; case CHANNEL_EXTENDED_DATA: - gotExtendedData(buf.readInt(), buf); + gotExtendedData(buf.readUInt32AsInt(), buf); break; case CHANNEL_WINDOW_ADJUST: - gotWindowAdjustment(buf.readInt()); + gotWindowAdjustment(buf.readUInt32AsInt()); break; case CHANNEL_REQUEST: @@ -333,12 +333,12 @@ public abstract class AbstractChannel } protected SSHPacket newBuffer(Message cmd) { - return new SSHPacket(cmd).putInt(recipient); + return new SSHPacket(cmd).putUInt32(recipient); } protected void receiveInto(ChannelInputStream stream, SSHPacket buf) throws ConnectionException, TransportException { - final int len = buf.readInt(); + final int len = buf.readUInt32AsInt(); if (len < 0 || len > getLocalMaxPacketSize() || len > buf.available()) throw new ConnectionException(DisconnectReason.PROTOCOL_ERROR, "Bad item length: " + len); if (log.isTraceEnabled()) diff --git a/src/main/java/net/schmizz/sshj/connection/channel/ChannelInputStream.java b/src/main/java/net/schmizz/sshj/connection/channel/ChannelInputStream.java index e9057567..b01c253e 100644 --- a/src/main/java/net/schmizz/sshj/connection/channel/ChannelInputStream.java +++ b/src/main/java/net/schmizz/sshj/connection/channel/ChannelInputStream.java @@ -163,7 +163,7 @@ public final class ChannelInputStream if (adjustment > 0) { log.info("Sending SSH_MSG_CHANNEL_WINDOW_ADJUST to #{} for {} bytes", chan.getRecipient(), adjustment); trans.write(new SSHPacket(Message.CHANNEL_WINDOW_ADJUST) - .putInt(chan.getRecipient()).putInt(adjustment)); + .putUInt32(chan.getRecipient()).putUInt32(adjustment)); win.expand(adjustment); } } diff --git a/src/main/java/net/schmizz/sshj/connection/channel/ChannelOutputStream.java b/src/main/java/net/schmizz/sshj/connection/channel/ChannelOutputStream.java index b65c27b6..d79d2c12 100644 --- a/src/main/java/net/schmizz/sshj/connection/channel/ChannelOutputStream.java +++ b/src/main/java/net/schmizz/sshj/connection/channel/ChannelOutputStream.java @@ -74,8 +74,8 @@ public final class ChannelOutputStream buffer.rpos(5); buffer.wpos(5); buffer.putMessageID(Message.CHANNEL_DATA); - buffer.putInt(0); // meant to be recipient - buffer.putInt(0); // meant to be data length + buffer.putUInt32(0); // meant to be recipient + buffer.putUInt32(0); // meant to be data length } @Override @@ -153,8 +153,8 @@ public final class ChannelOutputStream private void putRecipientAndLength() { final int origPos = buffer.wpos(); buffer.wpos(6); - buffer.putInt(chan.getRecipient()); - buffer.putInt(bufferLength); + buffer.putUInt32(chan.getRecipient()); + buffer.putUInt32(bufferLength); buffer.wpos(origPos); } diff --git a/src/main/java/net/schmizz/sshj/connection/channel/direct/AbstractDirectChannel.java b/src/main/java/net/schmizz/sshj/connection/channel/direct/AbstractDirectChannel.java index 358b2557..c3ada0ea 100644 --- a/src/main/java/net/schmizz/sshj/connection/channel/direct/AbstractDirectChannel.java +++ b/src/main/java/net/schmizz/sshj/connection/channel/direct/AbstractDirectChannel.java @@ -68,21 +68,21 @@ public abstract class AbstractDirectChannel } private void gotOpenConfirmation(SSHPacket buf) { - init(buf.readInt(), buf.readInt(), buf.readInt()); + init(buf.readUInt32AsInt(), buf.readUInt32AsInt(), buf.readUInt32AsInt()); open.set(); } private void gotOpenFailure(SSHPacket buf) { - open.deliverError(new OpenFailException(getType(), buf.readInt(), buf.readString())); + open.deliverError(new OpenFailException(getType(), buf.readUInt32AsInt(), buf.readString())); finishOff(); } protected SSHPacket buildOpenReq() { return new SSHPacket(Message.CHANNEL_OPEN) .putString(getType()) - .putInt(getID()) - .putInt(getLocalWinSize()) - .putInt(getLocalMaxPacketSize()); + .putUInt32(getID()) + .putUInt32(getLocalWinSize()) + .putUInt32(getLocalMaxPacketSize()); } @Override diff --git a/src/main/java/net/schmizz/sshj/connection/channel/direct/LocalPortForwarder.java b/src/main/java/net/schmizz/sshj/connection/channel/direct/LocalPortForwarder.java index b9e5b553..f5381d84 100644 --- a/src/main/java/net/schmizz/sshj/connection/channel/direct/LocalPortForwarder.java +++ b/src/main/java/net/schmizz/sshj/connection/channel/direct/LocalPortForwarder.java @@ -59,9 +59,9 @@ public class LocalPortForwarder { protected SSHPacket buildOpenReq() { return super.buildOpenReq() .putString(host) - .putInt(port) + .putUInt32(port) .putString(ss.getInetAddress().getHostAddress()) - .putInt(ss.getLocalPort()); + .putUInt32(ss.getLocalPort()); } } diff --git a/src/main/java/net/schmizz/sshj/connection/channel/direct/PTYMode.java b/src/main/java/net/schmizz/sshj/connection/channel/direct/PTYMode.java index 44fb09dd..5721e333 100644 --- a/src/main/java/net/schmizz/sshj/connection/channel/direct/PTYMode.java +++ b/src/main/java/net/schmizz/sshj/connection/channel/direct/PTYMode.java @@ -140,7 +140,7 @@ public enum PTYMode { Buffer.PlainBuffer buf = new Buffer.PlainBuffer(); for (Entry entry : modes.entrySet()) { buf.putByte(entry.getKey().getOpcode()); - buf.putInt(entry.getValue()); + buf.putUInt32(entry.getValue()); } buf.putByte((byte) 0); return buf.getCompactData(); diff --git a/src/main/java/net/schmizz/sshj/connection/channel/direct/SessionChannel.java b/src/main/java/net/schmizz/sshj/connection/channel/direct/SessionChannel.java index c7e1b801..88bcae12 100644 --- a/src/main/java/net/schmizz/sshj/connection/channel/direct/SessionChannel.java +++ b/src/main/java/net/schmizz/sshj/connection/channel/direct/SessionChannel.java @@ -86,10 +86,10 @@ public class SessionChannel true, new Buffer.PlainBuffer() .putString(term) - .putInt(cols) - .putInt(rows) - .putInt(width) - .putInt(height) + .putUInt32(cols) + .putUInt32(rows) + .putUInt32(width) + .putUInt32(height) .putBytes(PTYMode.encode(modes)) ).await(conn.getTimeout(), TimeUnit.SECONDS); } @@ -106,10 +106,10 @@ public class SessionChannel "pty-req", false, new Buffer.PlainBuffer() - .putInt(cols) - .putInt(rows) - .putInt(width) - .putInt(height) + .putUInt32(cols) + .putUInt32(rows) + .putUInt32(width) + .putUInt32(height) ); } @@ -150,7 +150,7 @@ public class SessionChannel if ("xon-xoff".equals(req)) canDoFlowControl = buf.readBoolean(); else if ("exit-status".equals(req)) - exitStatus = buf.readInt(); + exitStatus = buf.readUInt32AsInt(); else if ("exit-signal".equals(req)) { exitSignal = Signal.fromString(buf.readString()); wasCoreDumped = buf.readBoolean(); // core dumped @@ -170,7 +170,7 @@ public class SessionChannel .putBoolean(false) .putString(authProto) .putString(authCookie) - .putInt(screen) + .putUInt32(screen) ).await(conn.getTimeout(), TimeUnit.SECONDS); } diff --git a/src/main/java/net/schmizz/sshj/connection/channel/forwarded/AbstractForwardedChannel.java b/src/main/java/net/schmizz/sshj/connection/channel/forwarded/AbstractForwardedChannel.java index fb6e3b6d..7caad5e5 100644 --- a/src/main/java/net/schmizz/sshj/connection/channel/forwarded/AbstractForwardedChannel.java +++ b/src/main/java/net/schmizz/sshj/connection/channel/forwarded/AbstractForwardedChannel.java @@ -69,9 +69,9 @@ public abstract class AbstractForwardedChannel // Must ensure channel is attached before confirming, data could start coming in immediately! conn.attach(this); trans.write(newBuffer(Message.CHANNEL_OPEN_CONFIRMATION) - .putInt(getID()) - .putInt(getLocalWinSize()) - .putInt(getLocalMaxPacketSize())); + .putUInt32(getID()) + .putUInt32(getLocalWinSize()) + .putUInt32(getLocalMaxPacketSize())); open.set(); } diff --git a/src/main/java/net/schmizz/sshj/connection/channel/forwarded/RemotePortForwarder.java b/src/main/java/net/schmizz/sshj/connection/channel/forwarded/RemotePortForwarder.java index 8a14715d..8160f3c5 100644 --- a/src/main/java/net/schmizz/sshj/connection/channel/forwarded/RemotePortForwarder.java +++ b/src/main/java/net/schmizz/sshj/connection/channel/forwarded/RemotePortForwarder.java @@ -168,7 +168,7 @@ public class RemotePortForwarder throws ConnectionException, TransportException { SSHPacket reply = req(PF_REQ, forward); if (forward.port == 0) - forward.port = reply.readInt(); + forward.port = reply.readUInt32AsInt(); log.info("Remote end listening on {}", forward); listeners.put(forward, listener); return forward; @@ -193,7 +193,7 @@ public class RemotePortForwarder protected SSHPacket req(String reqName, Forward forward) throws ConnectionException, TransportException { - final byte[] specifics = new Buffer.PlainBuffer().putString(forward.address).putInt(forward.port) + final byte[] specifics = new Buffer.PlainBuffer().putString(forward.address).putUInt32(forward.port) .getCompactData(); return conn.sendGlobalRequest(reqName, true, specifics) .retrieve(conn.getTimeout(), TimeUnit.SECONDS); @@ -211,9 +211,9 @@ public class RemotePortForwarder @Override public void handleOpen(SSHPacket buf) throws ConnectionException, TransportException { - final ForwardedTCPIPChannel chan = new ForwardedTCPIPChannel(conn, buf.readInt(), buf.readInt(), buf.readInt(), - new Forward(buf.readString(), buf.readInt()), - buf.readString(), buf.readInt()); + final ForwardedTCPIPChannel chan = new ForwardedTCPIPChannel(conn, buf.readUInt32AsInt(), buf.readUInt32AsInt(), buf.readUInt32AsInt(), + new Forward(buf.readString(), buf.readUInt32AsInt()), + buf.readString(), buf.readUInt32AsInt()); if (listeners.containsKey(chan.getParentForward())) callListener(listeners.get(chan.getParentForward()), chan); else diff --git a/src/main/java/net/schmizz/sshj/connection/channel/forwarded/X11Forwarder.java b/src/main/java/net/schmizz/sshj/connection/channel/forwarded/X11Forwarder.java index 607fa3d6..935ee88f 100644 --- a/src/main/java/net/schmizz/sshj/connection/channel/forwarded/X11Forwarder.java +++ b/src/main/java/net/schmizz/sshj/connection/channel/forwarded/X11Forwarder.java @@ -56,9 +56,9 @@ public class X11Forwarder public void handleOpen(SSHPacket buf) throws ConnectionException, TransportException { callListener(listener, new X11Channel(conn, - buf.readInt(), - buf.readInt(), buf.readInt(), - buf.readString(), buf.readInt())); + buf.readUInt32AsInt(), + buf.readUInt32AsInt(), buf.readUInt32AsInt(), + buf.readString(), buf.readUInt32AsInt())); } /** Stop handling {@code x11} channel open requests. De-registers itself with connection layer. */ diff --git a/src/main/java/net/schmizz/sshj/sftp/FileAttributes.java b/src/main/java/net/schmizz/sshj/sftp/FileAttributes.java index 3cfd311d..bf3e8e73 100644 --- a/src/main/java/net/schmizz/sshj/sftp/FileAttributes.java +++ b/src/main/java/net/schmizz/sshj/sftp/FileAttributes.java @@ -119,26 +119,26 @@ public final class FileAttributes { public byte[] toBytes() { Buffer.PlainBuffer buf = new Buffer.PlainBuffer(); - buf.putInt(mask); + buf.putUInt32(mask); if (has(Flag.SIZE)) - buf.putUINT64(size); + buf.putUInt64(size); if (has(Flag.UIDGID)) { - buf.putInt(uid); - buf.putInt(gid); + buf.putUInt32(uid); + buf.putUInt32(gid); } if (has(Flag.MODE)) - buf.putInt(mode.getMask()); + buf.putUInt32(mode.getMask()); if (has(Flag.ACMODTIME)) { - buf.putInt(atime); - buf.putInt(mtime); + buf.putUInt32(atime); + buf.putUInt32(mtime); } if (has(Flag.EXTENDED)) { - buf.putInt(ext.size()); + buf.putUInt32(ext.size()); for (Entry entry : ext.entrySet()) { buf.putString(entry.getKey()); buf.putString(entry.getValue()); diff --git a/src/main/java/net/schmizz/sshj/sftp/RemoteDirectory.java b/src/main/java/net/schmizz/sshj/sftp/RemoteDirectory.java index 56fad605..9a8f2ecd 100644 --- a/src/main/java/net/schmizz/sshj/sftp/RemoteDirectory.java +++ b/src/main/java/net/schmizz/sshj/sftp/RemoteDirectory.java @@ -37,7 +37,7 @@ public class RemoteDirectory switch (res.getType()) { case NAME: - final int count = res.readInt(); + final int count = res.readUInt32AsInt(); for (int i = 0; i < count; i++) { final String name = res.readString(); res.readString(); // long name - IGNORED - shdve never been in the protocol diff --git a/src/main/java/net/schmizz/sshj/sftp/RemoteFile.java b/src/main/java/net/schmizz/sshj/sftp/RemoteFile.java index 9f349c26..64105573 100644 --- a/src/main/java/net/schmizz/sshj/sftp/RemoteFile.java +++ b/src/main/java/net/schmizz/sshj/sftp/RemoteFile.java @@ -55,10 +55,10 @@ public class RemoteFile public int read(long fileOffset, byte[] to, int offset, int len) throws IOException { - Response res = requester.doRequest(newRequest(PacketType.READ).putUINT64(fileOffset).putInt(len)); + Response res = requester.doRequest(newRequest(PacketType.READ).putUInt64(fileOffset).putUInt32(len)); switch (res.getType()) { case DATA: - int recvLen = res.readInt(); + int recvLen = res.readUInt32AsInt(); System.arraycopy(res.array(), res.rpos(), to, offset, recvLen); return recvLen; @@ -74,8 +74,8 @@ public class RemoteFile public void write(long fileOffset, byte[] data, int off, int len) throws IOException { requester.doRequest(newRequest(PacketType.WRITE) - .putUINT64(fileOffset) - .putInt(len - off) + .putUInt64(fileOffset) + .putUInt32(len - off) .putRawBytes(data, off, len) ).ensureStatusPacketIsOK(); } diff --git a/src/main/java/net/schmizz/sshj/sftp/Request.java b/src/main/java/net/schmizz/sshj/sftp/Request.java index 1b529222..4a6466eb 100644 --- a/src/main/java/net/schmizz/sshj/sftp/Request.java +++ b/src/main/java/net/schmizz/sshj/sftp/Request.java @@ -29,7 +29,7 @@ public class Request this.type = type; this.reqID = reqID; responsePromise = new Promise("sftp / " + reqID, SFTPException.chainer); - putInt(reqID); + putUInt32(reqID); } public long getRequestID() { diff --git a/src/main/java/net/schmizz/sshj/sftp/Response.java b/src/main/java/net/schmizz/sshj/sftp/Response.java index d068f2d4..d666ad9c 100644 --- a/src/main/java/net/schmizz/sshj/sftp/Response.java +++ b/src/main/java/net/schmizz/sshj/sftp/Response.java @@ -55,7 +55,7 @@ public class Response super(pk); this.protocolVersion = protocolVersion; this.type = readType(); - this.reqID = readLong(); + this.reqID = readUInt32(); } public int getProtocolVersion() { @@ -71,7 +71,7 @@ public class Response } public StatusCode readStatusCode() { - return StatusCode.fromInt(readInt()); + return StatusCode.fromInt(readUInt32AsInt()); } public Response ensurePacketTypeIs(PacketType pt) diff --git a/src/main/java/net/schmizz/sshj/sftp/SFTPEngine.java b/src/main/java/net/schmizz/sshj/sftp/SFTPEngine.java index 09784bc4..0e691db4 100644 --- a/src/main/java/net/schmizz/sshj/sftp/SFTPEngine.java +++ b/src/main/java/net/schmizz/sshj/sftp/SFTPEngine.java @@ -65,7 +65,7 @@ public class SFTPEngine public SFTPEngine init() throws IOException { - transmit(new SFTPPacket(PacketType.INIT).putInt(MAX_SUPPORTED_VERSION)); + transmit(new SFTPPacket(PacketType.INIT).putUInt32(MAX_SUPPORTED_VERSION)); final SFTPPacket response = reader.readPacket(); @@ -73,7 +73,7 @@ public class SFTPEngine if (type != PacketType.VERSION) throw new SFTPException("Expected INIT packet, received: " + type); - operativeVersion = response.readInt(); + operativeVersion = response.readUInt32AsInt(); log.info("Server version {}", operativeVersion); if (MAX_SUPPORTED_VERSION < operativeVersion) throw new SFTPException("Server reported incompatible protocol version: " + operativeVersion); @@ -120,7 +120,7 @@ public class SFTPEngine public RemoteFile open(String path, Set modes, FileAttributes fa) throws IOException { final String handle = doRequest( - newRequest(PacketType.OPEN).putString(path).putInt(OpenMode.toMask(modes)).putFileAttributes(fa) + newRequest(PacketType.OPEN).putString(path).putUInt32(OpenMode.toMask(modes)).putFileAttributes(fa) ).ensurePacketTypeIs(PacketType.HANDLE).readString(); return new RemoteFile(this, path, handle); } @@ -244,7 +244,7 @@ public class SFTPEngine protected static String readSingleName(Response res) throws IOException { res.ensurePacketTypeIs(PacketType.NAME); - if (res.readInt() == 1) + if (res.readUInt32AsInt() == 1) return res.readString(); else throw new SFTPException("Unexpected data in " + res.getType() + " packet"); diff --git a/src/main/java/net/schmizz/sshj/sftp/SFTPPacket.java b/src/main/java/net/schmizz/sshj/sftp/SFTPPacket.java index c7c790fe..7e90f99d 100644 --- a/src/main/java/net/schmizz/sshj/sftp/SFTPPacket.java +++ b/src/main/java/net/schmizz/sshj/sftp/SFTPPacket.java @@ -35,17 +35,17 @@ public class SFTPPacket> public FileAttributes readFileAttributes() { final FileAttributes.Builder builder = new FileAttributes.Builder(); - final int mask = readInt(); + final int mask = readUInt32AsInt(); if (FileAttributes.Flag.SIZE.isSet(mask)) - builder.withSize(readUINT64()); + builder.withSize(readUInt64()); if (FileAttributes.Flag.UIDGID.isSet(mask)) - builder.withUIDGID(readInt(), readInt()); + builder.withUIDGID(readUInt32AsInt(), readUInt32AsInt()); if (FileAttributes.Flag.MODE.isSet(mask)) - builder.withPermissions(readInt()); + builder.withPermissions(readUInt32AsInt()); if (FileAttributes.Flag.ACMODTIME.isSet(mask)) - builder.withAtimeMtime(readInt(), readInt()); + builder.withAtimeMtime(readUInt32AsInt(), readUInt32AsInt()); if (FileAttributes.Flag.EXTENDED.isSet(mask)) { - final int extCount = readInt(); + final int extCount = readUInt32AsInt(); for (int i = 0; i < extCount; i++) builder.withExtended(readString(), readString()); } diff --git a/src/main/java/net/schmizz/sshj/transport/Decoder.java b/src/main/java/net/schmizz/sshj/transport/Decoder.java index 113da9bf..0cd3fdc3 100644 --- a/src/main/java/net/schmizz/sshj/transport/Decoder.java +++ b/src/main/java/net/schmizz/sshj/transport/Decoder.java @@ -157,7 +157,7 @@ final class Decoder throws TransportException { cipher.update(inputBuffer.array(), 0, cipherSize); - final int len = inputBuffer.readInt(); // Read packet length + final int len = inputBuffer.readUInt32AsInt(); // Read packet length if (isInvalidPacketLength(len)) { // Check packet length validity log.info("Error decoding packet (invalid length) {}", inputBuffer.printHex()); diff --git a/src/main/java/net/schmizz/sshj/transport/Encoder.java b/src/main/java/net/schmizz/sshj/transport/Encoder.java index 108a82c1..e90a0788 100644 --- a/src/main/java/net/schmizz/sshj/transport/Encoder.java +++ b/src/main/java/net/schmizz/sshj/transport/Encoder.java @@ -116,7 +116,7 @@ final class Encoder // Put packet header buffer.wpos(startOfPacket); - buffer.putInt(packetLen); + buffer.putUInt32(packetLen); buffer.putByte((byte) padLen); // Now wpos will mark end of padding diff --git a/src/main/java/net/schmizz/sshj/transport/Proposal.java b/src/main/java/net/schmizz/sshj/transport/Proposal.java index 25b29a4e..7d96791a 100644 --- a/src/main/java/net/schmizz/sshj/transport/Proposal.java +++ b/src/main/java/net/schmizz/sshj/transport/Proposal.java @@ -82,7 +82,7 @@ class Proposal { packet.putString(""); packet.putBoolean(false); // Optimistic next packet does not follow - packet.putInt(0); // "Reserved" for future by spec + packet.putUInt32(0); // "Reserved" for future by spec } public Proposal(SSHPacket packet) { diff --git a/src/main/java/net/schmizz/sshj/transport/TransportImpl.java b/src/main/java/net/schmizz/sshj/transport/TransportImpl.java index 8d851d7f..8524c16b 100644 --- a/src/main/java/net/schmizz/sshj/transport/TransportImpl.java +++ b/src/main/java/net/schmizz/sshj/transport/TransportImpl.java @@ -345,7 +345,7 @@ public final class TransportImpl throws TransportException { final long seq = decoder.getSequenceNumber(); log.info("Sending SSH_MSG_UNIMPLEMENTED for packet #{}", seq); - return write(new SSHPacket(Message.UNIMPLEMENTED).putInt(seq)); + return write(new SSHPacket(Message.UNIMPLEMENTED).putUInt32(seq)); } @Override @@ -438,7 +438,7 @@ public final class TransportImpl log.debug("Sending SSH_MSG_DISCONNECT: reason=[{}], msg=[{}]", reason, message); try { write(new SSHPacket(Message.DISCONNECT) - .putInt(reason.toInt()) + .putUInt32(reason.toInt()) .putString(message) .putString("")); } catch (IOException worthless) { @@ -509,7 +509,7 @@ public final class TransportImpl private void gotDisconnect(SSHPacket buf) throws TransportException { - DisconnectReason code = DisconnectReason.fromInt(buf.readInt()); + DisconnectReason code = DisconnectReason.fromInt(buf.readUInt32AsInt()); String message = buf.readString(); log.info("Received SSH_MSG_DISCONNECT (reason={}, msg={})", code, message); throw new TransportException(code, "Disconnected; server said: " + message); @@ -537,7 +537,7 @@ public final class TransportImpl */ private void gotUnimplemented(SSHPacket buf) throws SSHException { - long seqNum = buf.readLong(); + long seqNum = buf.readUInt32(); log.info("Received SSH_MSG_UNIMPLEMENTED #{}", seqNum); if (kexer.isKexOngoing()) throw new TransportException("Received SSH_MSG_UNIMPLEMENTED while exchanging keys"); diff --git a/src/main/java/net/schmizz/sshj/userauth/method/AuthKeyboardInteractive.java b/src/main/java/net/schmizz/sshj/userauth/method/AuthKeyboardInteractive.java index fca1af43..512067cd 100644 --- a/src/main/java/net/schmizz/sshj/userauth/method/AuthKeyboardInteractive.java +++ b/src/main/java/net/schmizz/sshj/userauth/method/AuthKeyboardInteractive.java @@ -65,7 +65,7 @@ public class AuthKeyboardInteractive } else { provider.init(makeAccountResource(), buf.readString(), buf.readString()); buf.readString(); // lang-tag - final int numPrompts = buf.readInt(); + final int numPrompts = buf.readUInt32AsInt(); final CharArrWrap[] userReplies = new CharArrWrap[numPrompts]; for (int i = 0; i < numPrompts; i++) { final String prompt = buf.readString(); @@ -79,7 +79,7 @@ public class AuthKeyboardInteractive private void respond(CharArrWrap[] userReplies) throws TransportException { - final SSHPacket pkt = new SSHPacket(Message.USERAUTH_INFO_RESPONSE).putInt(userReplies.length); + final SSHPacket pkt = new SSHPacket(Message.USERAUTH_INFO_RESPONSE).putUInt32(userReplies.length); for (final CharArrWrap response : userReplies) pkt.putSensitiveString(response.arr); params.getTransport().write(pkt); diff --git a/src/test/java/net/schmizz/sshj/util/BufferTest.java b/src/test/java/net/schmizz/sshj/util/BufferTest.java index 4e169607..ba30539e 100644 --- a/src/test/java/net/schmizz/sshj/util/BufferTest.java +++ b/src/test/java/net/schmizz/sshj/util/BufferTest.java @@ -59,7 +59,7 @@ public class BufferTest { assertEquals(handyBuf.putString("some string").readString(), "some string"); // uint32 - assertEquals(handyBuf.putInt(0xffffffffL).readLong(), 0xffffffffL); + assertEquals(handyBuf.putUInt32(0xffffffffL).readUInt32(), 0xffffffffL); } @Test