TeamAmaze / TeamAmaze/AmazeFileManager
FTP server crashes with `CoderMalfunctionError: IllegalArgumentException`.
Nobody has claimed this yet.
- Dominant language
- Kotlin
- Stars
- 6.4k
- Forks
- 1.7k
- Avg merge
- 3d 9h
- Merged PRs (30d)
- 1
Description
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
-
Accessed “FTP Server” (from the navigation pane).
-
Disabled “Secure Connection” (because FTPS isn't RFC-standard). ^1
-
Connected via
dolphin-25.04.0-3.fc42.x86_64, augmented withkio-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 ProjectI connected to it from both my client, and a VM running on that client.
Expected behavior
It shouldn't crash.
Screenshots
My Environment
-
The Hardware
[ro.product.brand]: [Fairphone] [ro.build.product]: [FP5] -
The OS
[ro.build.version.release]: [14] [ro.build.display.id]: [FP5.UT2M.B.113.20250319] -
Whether Rooted
No.
-
The Version Of The Application
sourcePackage=com.amaze.filemanager versionName=3.10
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the FTP Server entry point and trace the reported CWD path through FtpIoSession.write and FtpResponseEncoder.encode. Reproduce the crash using the listed Android and Dolphin/kio-ftps setup, then verify that the FTP server no longer crashes during that operation.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- android, java, kotlin
- Domain
- mobile, networking
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100