joel16 / 3DShell

3DShell - (Pronounced 3D Shell) is a multi purpose file manager for the Nintendo 3DS. Heavily inspired by the CyanogenMod/LineageOS file manager.
311 stars 20 forks source link

Major Issue with Delete and Directories #62

Closed MarioKartFan closed 3 years ago

MarioKartFan commented 4 years ago

I have identified a major bug in the latest public release. If you execute the Select command on a series of files in a directory and inadvertently execute the Select command on the directory itself (i.e., the top entry in the file tree) and then Execute the Delete command, 3DShell will return an error but will also wipe out the entire contents of the directory, including all subdirectories.

This might be the intended functionality (although it is hard to imagine that it would be). However the error occurs even if, prior to execution of the Delete command, the user deselects all files / folders marked for deletion.

cheeseypi commented 3 years ago

I want to bump this in priority if possible (if 3dshell is no longer in active development, I would consider this a showstopping bug, to the point that I'm uninstalling this app). I just accidentally nuked my 3ds sd card by accidentally selecting the parent directory and executing a delete command. I figured it would be fine, since there was no check box next to the parent directory to indicate it had been selected. Once it took more than 5 seconds, I force shut down my 3ds, only to find it wouldn't boot. This turned out to be because this hellscape of an app had succeeded in deleting all top level files including boot.firm and some unknown number of other files. Luckily I shut it down before it erased my games, but dear god, this needs to be fixed.

joel16 commented 3 years ago

I want to bump this in priority if possible (if 3dshell is no longer in active development, I would consider this a showstopping bug, to the point that I'm uninstalling this app). I just accidentally nuked my 3ds sd card by accidentally selecting the parent directory and executing a delete command. I figured it would be fine, since there was no check box next to the parent directory to indicate it had been selected. Once it took more than 5 seconds, I force shut down my 3ds, only to find it wouldn't boot. This turned out to be because this hellscape of an app had succeeded in deleting all top level files including boot.firm and some unknown number of other files. Luckily I shut it down before it erased my games, but dear god, this needs to be fixed.

You are right, this is indeed a dangerous bug. Initially I wanted to re-write this program in c++ however other interests/projects are in the way at the moment. I'll look into getting a hotfix published soon, at least by this weekend at most.

cheeseypi commented 3 years ago

Thanks. Luckily I was able to salvage everything, and I really do like the shell. Glad I can keep it on my 3ds :)

joel16 commented 3 years ago

Just an update, I know I said this weekend and I'm already late but I decided to just go ahead with a re-write. I'll be making an update sometime this week and it may not be as fully featured as the current version is, but I'll slowly push minor updates (which you'll be able to update through the app itself) until the re-write catches up. I've gotten most of the basic gui/file navigation backend done, just need to get the file functionalities in along with some code clean ups, and a lot more testing. Please bare with me 😅

joel16 commented 3 years ago

Sorry for taking so long, but I finally got some time around to make a release. Still a lot more things to reimplement so I've tagged it as BETA for now. The basic file handling functionality should be there though. Fixed with https://github.com/joel16/3DShell/releases/tag/v5.0.0