darkstar
### Version 6.0.0-beta.1 ### Commit hash _No response_ ### Tested debug version? - [x] Yes ### Which operating systems have you used? - [x] Windows - [ ] Linux - [ ] macOS - [ ] Other ### What is the architectural bit size you're using? - [ ] 32-bit - [x] 64-bit - [ ] Unsure or unknown ### What processor are you using? - [x] An Intel or AMD - [ ] An ARM or Apple Silicon - [ ] Unsure or unknown ### Image format ISO9660 w/ Rock-Ridge extension ### Application that created the image no idea ### What were you doing when it failed? - [ ] I was converting the image to another format... - [ ] I was retrieving image information... - [ ] I was retrieving filesystem information... - [x] I was listing the filesystem contents... - [ ] I was extracting the filesystem contents... - [ ] I was creating a metadata sidecar... - [ ] I was checksumming the image... - [ ] I was verifying the image... - [ ] I was calculating the image entropy... ### Destination image format _No response_ ### Filesystem ISO9660 w/ Rock-Ridge extensions ### Description Aaru crashes when it encounters a duplicate file name in one of the directories: ``` Directory: SUNSITE.UNC/DOCS [23:39:51 DBG] (ISO9660 plugin) Sector 274 (00:05:49), Raw, Mode 1 [23:39:51 DBG] (ISO9660 plugin) Sector 275 (00:05:50), Raw, Mode 1 [23:39:51 DBG] (ISO9660 plugin) Sector 276 (00:05:51), Raw, Mode 1 [23:39:51 ERR] Error reading file: An item with the same key has already been added. Key: HARDWARE System.ArgumentException: An item with the same key has already been added. Key: HARDWARE at void System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value) at void Aaru.Commands.Filesystem.LsCommand.<>c__DisplayClass2_0.<ListFilesInDir>b__1(ProgressContext ctx) at Task Spectre.Console.Progress.<>c__DisplayClass30_0.<Start>b__0(ProgressContext ctx) in /_/src/Spectre.Console/Live/Progress/Progress.cs:73 at void Spectre.Console.Progress.<>c__DisplayClass32_0.<<StartAsync>b__0>d.MoveNext() in /_/src/Spectre.Console/Live/Progress/Progress.cs:103 at void Spectre.Console.Progress.<>c__DisplayClass33_0`1.<<StartAsync>b__0>d.MoveNext() in /_/src/Spectre.Console/Live/Progress/Progress.cs:135 at async void Spectre.Console.DefaultExclusivityMode.<RunAsync>d__3`1.MoveNext() in /_/src/Spectre.Console/Internal/ DefaultExclusivityMode.cs:40 at async void Spectre.Console.Progress.<StartAsync>d__33`1.MoveNext() in /_/src/Spectre.Console/Live/Progress/ Progress.cs:118 at async void Spectre.Console.Progress.<StartAsync>d__32.MoveNext() in /_/src/Spectre.Console/Live/Progress/ Progress.cs:101 at void Spectre.Console.Progress.Start(Action<ProgressContext> action) in /_/src/Spectre.Console/Live/Progress/ Progress.cs:77 at void Aaru.Core.Spectre.ProgressSingleSpinner(Action<ProgressContext> action) at void Aaru.Commands.Filesystem.LsCommand.ListFilesInDir(string path, IReadOnlyFilesystem fs) at void Aaru.Commands.Filesystem.LsCommand.ListFilesInDir(string path, IReadOnlyFilesystem fs) at void Aaru.Commands.Filesystem.LsCommand.ListFilesInDir(string path, IReadOnlyFilesystem fs) at int Aaru.Commands.Filesystem.LsCommand.Execute(CommandContext context, Settings settings, CancellationToken cancellationToken) Error reading file: An item with the same key has already been added. Key: HARDWARE Uploading statistics ``` Apparently this is allowed since one is a directory (`HARDWARE`) and one is a file (`HARDWARE.`) and the Rock-Ridge extension (`TRANS.TBL`) converts one to a lower-case file and the other to an upper-case link: ``` ... D FAQS faqs D FSSTND fsstnd D HARDWARE hardware L HARDWARE.;1 HARDWARE HOWTO/Hardware-HOWTOs-Map.gznfo-systems D HOWTO HOWTO L HOWTO.;1 howto HOWTOWTO/Hardware-HOWTOiizgzta.ps.gz F INDEX.;1 INDEX ... ``` This is the output from `aaru filesystem info` on the respective image file: ``` aaru 6.0.0-beta.1+d917198a Copyright c 2011-2026 Natalia Portillo Image format identified by Alcohol 120% Media Descriptor Structure. 1 partitions found. Partition 0: ┌─────────────┬─────────────────────────────────┐ │ Name │ │ │ Type │ Mode1 │ │ Start │ sector 0, byte 0 │ │ Length │ 319608 sectors, 751718016 bytes │ │ Scheme │ │ │ Description │ Track 1. │ └─────────────┴─────────────────────────────────┘ Identified by ISO9660 Filesystem. ISO9660 file system System Use Sharing Protocol present. Rock Ridge Interchange Protocol present. ------------------------------ VOLUME DESCRIPTOR INFORMATION: ------------------------------ System identifier: LINUX Volume identifier: CDROM Volume set identifier: Publisher identifier: S.u.S.E. GmbH, [email protected] Data preparer identifier: ...bs Application identifier: Volume creation date: 07/06/1996 08:05:51 Volume modification date: 07/06/1996 08:05:51 Volume does not expire. Volume effective date: 07/06/1996 08:05:51 Volume has 319458 blocks of 2048 bytes each ---------------------------------------- SYSTEM USE SHARING PROTOCOL INFORMATION: ---------------------------------------- Extension: 1 ID: RRIP_1991A, version 1 Description: THE ROCK RIDGE INTERCHANGE PROTOCOL PROVIDES SUPPORT FOR POSIX FILE SYSTEM SEMANTICS Source: PLEASE CONTACT DISC PUBLISHER FOR SPECIFICATION SOURCE. SEE PUBLISHER IDENTIFIER IN PRIMARY VOLUME DESCRIPTOR FOR CONTACT INFORMATION. Uploading statistics ``` ### Exact command line used `aaru filesystem -d list CDROM4.ISO` ### Expected behavior I somehow expected Aaru to honor the Rock-Ridge extension and show me the converted filenames. Or at least have it not crash if a file and a directory have the same name ### Actual behavior Aaru crashed ### Output of command execution with debug output enabled ```shell see above ``` ### Affected image The image is `CDROM4` from here: https://archive.org/download/suse-linux-aktuell-1996-08