View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0005808 | DarkRadiant | Saving and loading | public | 13.11.2021 03:30 | 19.08.2022 15:33 |
Reporter | jonri | Assigned To | greebo | ||
Priority | low | Severity | crash | Reproducibility | always |
Status | closed | Resolution | fixed | ||
Platform | Linux | ||||
Product Version | 2.14.0 | ||||
Target Version | 2.14.0 | Fixed in Version | 2.14.0 | ||
Summary | 0005808: Crash when saving map or prefab without a file extension | ||||
Description | When using the "Export selected as Map" or "Export selected as Prefab" options from the File menu, entering a name without a file extension will result in a segfault. The "format" parameter in MapResource::saveFile is a dereferenced null pointer. Presumably this data is derived from the file extension, which is not present. I also tried adding a nonsense extension (i.e. myprefab.wtf) which also resulted in the same crash In many pieces of software, it is customary for the file extension selected in the save dialog to get automatically applied if it is missing from the requested filename. It's entirely possible this happens on Windows but not Linux; however, using "Export selected as model" does warn if the filename does not end with the proper extension (but lets you continue anyways) so it was thought of somewhere. And for completeness, "Export Map" will successfully create a file without an extension. I'd suggest at least standardizing all save dialogs to add the selected extension when none is present, maybe even enforcing the correct extension unless it makes sense not to. | ||||
Steps To Reproduce | Use the "Export selected as Map" or "Export selected as Prefab" options from the File menu, and enter a name without a file extension. | ||||
Tags | No tags attached. | ||||
While I can't get it to crash in Windows (it seems the file dialog is doing a better job at assigning the default extension), I can confirm that the Map::saveSelected routine is vulnerable against paths without extension - the format cannot be determined, and the crash follows. | |
DarkRadiant: master 00fc6d3a 14.11.2021 08:04 Details Diff |
0005808: Craft a unit test confirming the crash when the file extension is empty and no format was selected in the dialog (e.g. "*.*") |
Affected Issues 0005808 |
|
mod - test/MapExport.cpp | Diff File | ||
DarkRadiant: master 0fef59f2 14.11.2021 08:33 Details Diff |
0005808: Map::saveSelected falls back to the currently active map format if none is specified |
Affected Issues 0005808 |
|
mod - radiantcore/map/Map.cpp | Diff File | ||
mod - test/MapExport.cpp | Diff File | ||
DarkRadiant: master 0923a9b0 14.11.2021 09:52 Details Diff |
0005808: Extend the map format fallback to all other clients of MapResource::saveFile. |
Affected Issues 0005808 |
|
mod - radiantcore/map/Map.cpp | Diff File | ||
mod - radiantcore/map/Map.h | Diff File | ||
mod - radiantcore/map/RegionManager.cpp | Diff File |
Date Modified | Username | Field | Change |
---|---|---|---|
13.11.2021 03:31 | jonri | New Issue | |
13.11.2021 04:57 | greebo | Status | new => acknowledged |
14.11.2021 06:06 | greebo | Status | acknowledged => confirmed |
14.11.2021 06:06 | greebo | Note Added: 0014540 | |
14.11.2021 08:34 | greebo | Assigned To | => greebo |
14.11.2021 08:34 | greebo | Status | confirmed => assigned |
14.11.2021 09:52 | greebo | Changeset attached | => DarkRadiant master 00fc6d3a |
14.11.2021 09:52 | greebo | Changeset attached | => DarkRadiant master 0fef59f2 |
14.11.2021 09:52 | greebo | Changeset attached | => DarkRadiant master 0923a9b0 |
14.11.2021 10:39 | greebo | Target Version | => 2.14.0 |
14.11.2021 10:39 | greebo | Status | assigned => resolved |
14.11.2021 10:39 | greebo | Resolution | open => fixed |
14.11.2021 10:39 | greebo | Fixed in Version | => 2.14.0 |
19.08.2022 15:33 | greebo | Status | resolved => closed |