I have spotted a problem leading to data loss while transferring CP/M files larger than 16384 bytes using dsktrans. I have notified the libdsk author and he released a new version of libdsk with the following changelog entry: - Bugfix in the rcpmfs driver: Fixed corruption of files greater than 16k with a file size not a multiple of 128 bytes. Reproducible: Always Steps to Reproduce: 1. create example.dsk, an example CP/M disk image containing at least one file larger than 16384 bytes with a size that is not a multiple of 128 bytes 2. try to unpack this disk image using the following commands: mkdir temp dsktrans -itype dsk -otype rcpmfs example.dsk temp 3. Compare extracted files with original files Actual Results: The file of size greater than 16384 bytes will have part of its content (just before the offset 0x4000) replaced with a serie of 0xe5's Expected Results: There are no differences between original and extracted files The new version does seem to fix the issue. The issue is serious. If I didn't notice that, I could have malformed my vintage software collection while doing some maintenance job on it.
The bug has been referenced in the following commit(s): https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=202cc98830ee3af38f41a776f6fd53461e14e6c1 commit 202cc98830ee3af38f41a776f6fd53461e14e6c1 Author: Jonas Stein <jstein@gentoo.org> AuthorDate: 2022-02-02 19:53:36 +0000 Commit: Jonas Stein <jstein@gentoo.org> CommitDate: 2022-02-02 19:53:56 +0000 app-emulation/libdsk: bump to 1.5.18 Version bump fixes critical bug in 1.5.8 with potential data loss. Eapi bump to EAPI=8 Bug: https://bugs.gentoo.org/832575 Package-Manager: Portage-3.0.30, Repoman-3.0.3 Signed-off-by: Jonas Stein <jstein@gentoo.org> app-emulation/libdsk/Manifest | 1 + app-emulation/libdsk/libdsk-1.5.18.ebuild | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+)
TODO: when 832592 is solved, delete the old version and close this ticket.
Version bump completed.