GabriRuflex commented on issue #275:
URL: https://github.com/apache/mina-sshd/issues/275#issuecomment-1325329363

   Hi Tomas and thanks for your support!
   
   > What does the _remote_ device run?
   
   SSH 2.0, unfortunately no more details :( 
   
   > Three points:
   > 
   >     1. The exception occurs after having received an error reply from the 
server in response to the `sftp.open()` call. So even if this particular 
exception is fixed, your problem will not be solved.
   
   I tried also to mount the remote filesystem but it's still not working (only 
in that specific device)
   ```
   ...
   SftpFileSystemProvider provider = new SftpFileSystemProvider(client);
   try (FileSystem fs = provider.newFileSystem(session)) {
       Path remotePath = fs.getPath(remotefilepath);
       try {
           Files.copy(localfileStream, remotePath, 
StandardCopyOption.REPLACE_EXISTING);
       } catch (IOException e) {}
   }
   ...
   ```
   
   ```
   org.apache.sshd.common.util.buffer.BufferException: Underflow: requested=4, 
available=0
           at 
deployment.test.ear//org.apache.sshd.common.util.buffer.Buffer.ensureAvailable(Buffer.java:635)
           at 
deployment.test.ear//org.apache.sshd.common.util.buffer.Buffer.getUInt(Buffer.java:281)
           at 
deployment.test.ear//org.apache.sshd.common.util.buffer.Buffer.getInt(Buffer.java:277)
           at 
deployment.test.ear//org.apache.sshd.common.util.buffer.ByteArrayBuffer.getString(ByteArrayBuffer.java:240)
           at 
deployment.test.ear//org.apache.sshd.common.util.buffer.Buffer.getString(Buffer.java:309)
           at 
deployment.test.ear//org.apache.sshd.sftp.client.impl.AbstractSftpClient.checkAttributesResponse(AbstractSftpClient.java:298)
           at 
deployment.test.ear//org.apache.sshd.sftp.client.impl.AbstractSftpClient.checkAttributes(AbstractSftpClient.java:283)
           at 
deployment.test.ear//org.apache.sshd.sftp.client.impl.AbstractSftpClient.stat(AbstractSftpClient.java:997)
           at 
deployment.test.ear//org.apache.sshd.sftp.client.fs.SftpFileSystem$Wrapper.stat(SftpFileSystem.java:412)
           at 
deployment.test.ear//org.apache.sshd.sftp.client.fs.SftpFileSystemProvider.resolveRemoteFileAttributes(SftpFileSystemProvider.java:981)
           at 
deployment.test.ear//org.apache.sshd.sftp.client.fs.SftpFileSystemProvider.lambda$readRemoteAttributes$0(SftpFileSystemProvider.java:969)
           at 
deployment.test.ear//org.apache.sshd.sftp.client.impl.SftpPathImpl.withAttributeCache(SftpPathImpl.java:120)
           at 
deployment.test.ear//org.apache.sshd.sftp.client.impl.SftpPathImpl.withAttributeCache(SftpPathImpl.java:140)
           at 
deployment.test.ear//org.apache.sshd.sftp.client.fs.SftpFileSystemProvider.readRemoteAttributes(SftpFileSystemProvider.java:969)
           at 
deployment.test.ear//org.apache.sshd.sftp.client.impl.AbstractSftpFileAttributeView.readRemoteAttributes(AbstractSftpFileAttributeView.java:71)
           at 
deployment.test.ear//org.apache.sshd.sftp.client.fs.SftpPosixFileAttributeView.readAttributes(SftpPosixFileAttributeView.java:52)
           at 
deployment.test.ear//org.apache.sshd.sftp.client.fs.SftpPosixFileAttributeView.readAttributes(SftpPosixFileAttributeView.java:40)
           at 
deployment.test.ear//org.apache.sshd.sftp.client.fs.SftpFileSystemProvider.checkAccess(SftpFileSystemProvider.java:826)
           at 
deployment.test.ear//org.apache.sshd.sftp.client.fs.SftpFileSystemProvider.delete(SftpFileSystemProvider.java:581)
           at 
java.base/java.nio.file.spi.FileSystemProvider.deleteIfExists(FileSystemProvider.java:787)
           at java.base/java.nio.file.Files.deleteIfExists(Files.java:1181)
           at java.base/java.nio.file.Files.copy(Files.java:3055)
           at 
deployment.test.ear//com.test.UploadFile.upload(UploadFile.java:109)
   ```
   
   >     2. The `BufferException: Underflow: requested=4, available=0` [at that 
point](https://github.com/apache/mina-sshd/blob/45fd3a4a84c453a5e053cce624f63465844deb07/sshd-sftp/src/main/java/org/apache/sshd/sftp/client/impl/AbstractSftpClient.java#L248)
 indicates that the server sent no error message or language tag in the error 
status reply. I can't find any information that would say these were 
optional... but Apache MINA sshd could perhaps be lenient and consider them so.
   
   I can login to that device via CLI using `ssh` or `sftp` tools. Also other 
java libraries can do that.
   
   >     3. The failing code has been touched last 8 years ago, so the problem 
is certainly not new in 2.9.2. I wonder why this problem never was reported 
before? Probably the remote device runs a very old version of SFTP. [Prior to 
SFTP version 
3](https://datatracker.ietf.org/doc/html/draft-ietf-secsh-filexfer-09#section-12.4),
 the SSH_FXP_STATUS reply indeed didn't have the error message and language tag 
fields.
   
   I'm trying to migrate from another java library (which is working properly) 
to Apache MINA sshd so I don't know if this issue is new or it a regression 
related to the latest version
   
   On the old library I just added a try catch to ignore the SSH_FXP_STATUS 
error and go ahead with the execution.
   
   The current SFTP version is 3
   ```
   sftp> version
   SFTP protocol version 3
   ```
   
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscr...@mina.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@mina.apache.org
For additional commands, e-mail: dev-h...@mina.apache.org

Reply via email to