AmazeFileManager icon indicating copy to clipboard operation
AmazeFileManager copied to clipboard

FTP server crashes with `CoderMalfunctionError: IllegalArgumentException`.

Open RokeJulianLockhart opened this issue 8 months ago • 3 comments

What The Problem Is

Exception

  • App Name: Amaze File Manager
  • Package: com.amaze.filemanager
  • Version: 3.10
  • User Action: UI Error
  • Request: Application crash
  • OS: Linux Android 14 - 34
  • Device: FP5
  • Model: FP5
  • Product: FP5

Crash log

java.nio.charset.CoderMalfunctionError: java.lang.IllegalArgumentException: newPosition > limit: (55 > 37)
	at java.nio.charset.CharsetEncoder.encode(CharsetEncoder.java:624)
	at org.apache.mina.core.buffer.AbstractIoBuffer.putString(AbstractIoBuffer.java:1811)
	at org.apache.ftpserver.listener.nio.FtpResponseEncoder.encode(FtpResponseEncoder.java:49)
	at org.apache.mina.filter.codec.ProtocolCodecFilter.filterWrite(ProtocolCodecFilter.java:299)
	at org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterWrite(DefaultIoFilterChain.java:629)
	at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1500(DefaultIoFilterChain.java:48)
	at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.filterWrite(DefaultIoFilterChain.java:957)
	at org.apache.mina.core.filterchain.IoFilterEvent.fire(IoFilterEvent.java:84)
	at org.apache.mina.filter.logging.MdcInjectionFilter.filter(MdcInjectionFilter.java:135)
	at org.apache.mina.filter.util.CommonEventFilter.filterWrite(CommonEventFilter.java:80)
	at org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterWrite(DefaultIoFilterChain.java:629)
	at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1500(DefaultIoFilterChain.java:48)
	at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.filterWrite(DefaultIoFilterChain.java:957)
	at org.apache.mina.core.filterchain.IoFilterAdapter.filterWrite(IoFilterAdapter.java:123)
	at org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterWrite(DefaultIoFilterChain.java:629)
	at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1500(DefaultIoFilterChain.java:48)
	at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.filterWrite(DefaultIoFilterChain.java:957)
	at org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.filterWrite(DefaultIoFilterChain.java:881)
	at org.apache.mina.core.filterchain.DefaultIoFilterChain.callPreviousFilterWrite(DefaultIoFilterChain.java:629)
	at org.apache.mina.core.filterchain.DefaultIoFilterChain.fireFilterWrite(DefaultIoFilterChain.java:622)
	at org.apache.mina.core.session.AbstractIoSession.write(AbstractIoSession.java:574)
	at org.apache.mina.core.session.AbstractIoSession.write(AbstractIoSession.java:519)
	at org.apache.ftpserver.impl.FtpIoSession.write(FtpIoSession.java:530)
	at org.apache.ftpserver.command.impl.CWD.execute(CWD.java:79)
	at org.apache.ftpserver.impl.DefaultFtpHandler.messageReceived(DefaultFtpHandler.java:211)
	at org.apache.ftpserver.listener.nio.FtpHandlerAdapter.messageReceived(FtpHandlerAdapter.java:62)
	at org.apache.mina.core.filterchain.DefaultIoFilterChain$TailFilter.messageReceived(DefaultIoFilterChain.java:858)
	at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:542)
	at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1300(DefaultIoFilterChain.java:48)
	at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:947)
	at org.apache.ftpserver.listener.nio.FtpLoggingFilter.messageReceived(FtpLoggingFilter.java:85)
	at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:542)
	at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1300(DefaultIoFilterChain.java:48)
	at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:947)
	at org.apache.mina.core.filterchain.IoFilterEvent.fire(IoFilterEvent.java:74)
	at org.apache.mina.filter.logging.MdcInjectionFilter.filter(MdcInjectionFilter.java:135)
	at org.apache.mina.filter.util.CommonEventFilter.messageReceived(CommonEventFilter.java:70)
	at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:542)
	at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1300(DefaultIoFilterChain.java:48)
	at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:947)
	at org.apache.mina.filter.codec.ProtocolCodecFilter$ProtocolDecoderOutputImpl.flush(ProtocolCodecFilter.java:398)
	at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecFilter.java:234)
	at org.apache.mina.core.filterchain.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:542)
	at org.apache.mina.core.filterchain.DefaultIoFilterChain.access$1300(DefaultIoFilterChain.java:48)
	at org.apache.mina.core.filterchain.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:947)
	at org.apache.mina.core.filterchain.IoFilterEvent.fire(IoFilterEvent.java:74)
	at org.apache.mina.core.session.IoEvent.run(IoEvent.java:63)
	at org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.runTask(OrderedThreadPoolExecutor.java:770)
	at org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.runTasks(OrderedThreadPoolExecutor.java:762)
	at org.apache.mina.filter.executor.OrderedThreadPoolExecutor$Worker.run(OrderedThreadPoolExecutor.java:704)
	at java.lang.Thread.run(Thread.java:1012)
Caused by: java.lang.IllegalArgumentException: newPosition > limit: (55 > 37)
	at java.nio.Buffer.createPositionException(Buffer.java:353)
	at java.nio.Buffer.position(Buffer.java:328)
	at java.nio.CharBuffer.position(CharBuffer.java:1651)
	at com.android.icu.charset.CharsetEncoderICU.setPosition(CharsetEncoderICU.java:251)
	at com.android.icu.charset.CharsetEncoderICU.encodeLoop(CharsetEncoderICU.java:189)
	at java.nio.charset.CharsetEncoder.encode(CharsetEncoder.java:622)
	... 50 more

How To Reproduce

  1. Accessed “FTP Server” (from the navigation pane).

  2. Disabled “Secure Connection” (because FTPS isn't RFC-standard). ^1

  3. Connected via dolphin-25.04.0-3.fc42.x86_64, augmented with kio-ftps-0.2-32.fc42.x86_64:

    Name            : kio-ftps
    Epoch           : 0
    Version         : 0.2
    Release         : 32.fc42
    Architecture    : x86_64
    Installed size  : 194.0 KiB
    Source          : kio-ftps-0.2-32.fc42.src.rpm
    From repository : <unknown>
    URL             : http://kasablanca.berlios.de/kio-ftps/
    Description     : An ftps KIO slave for KDE, based on rfc4217.
    Vendor          : Fedora Project
    

    I connected to it from both my client, and a VM running on that client.

Expected behavior

It shouldn't crash.

Screenshots

A Screenshot

My Environment

  1. The Hardware

    [ro.product.brand]: [Fairphone]
    [ro.build.product]: [FP5]
    
  2. The OS

    [ro.build.version.release]: [14]
    [ro.build.display.id]: [FP5.UT2M.B.113.20250319]
    
  3. Whether Rooted

    No.

  4. The Version Of The Application

    sourcePackage=com.amaze.filemanager
    versionName=3.10
    

RokeJulianLockhart avatar May 08 '25 13:05 RokeJulianLockhart

Additional context

https://github.com/zhanghai/MaterialFiles/issues/1422#issue-3049164755 occurred afterward, its circumstances similar.

RokeJulianLockhart avatar May 08 '25 14:05 RokeJulianLockhart

ping @TranceLove

EmmanuelMess avatar May 08 '25 14:05 EmmanuelMess

Additional context

The undermentioned occurred at the same time as #issue-3049099201:

  1. bugzilla.redhat.com/show_bug.cgi?id=2365102

  2. bugs.kde.org/show_bug.cgi?id=503928

RokeJulianLockhart avatar May 08 '25 14:05 RokeJulianLockhart