From 35cdc641b2a6d4a0915fda9ca7019c974c77641b Mon Sep 17 00:00:00 2001 From: AffectedArc07 Date: Sat, 25 Jul 2020 18:09:57 +0100 Subject: [PATCH 1/3] Unit Test For Invalid Map Templates --- code/datums/shuttles.dm | 5 +++-- code/modules/awaymissions/maploader/reader.dm | 5 +++++ code/modules/unit_tests/_unit_tests.dm | 1 + code/modules/unit_tests/map_templates.dm | 7 +++++++ 4 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 code/modules/unit_tests/map_templates.dm diff --git a/code/datums/shuttles.dm b/code/datums/shuttles.dm index 53517d5dbc9..4d6310041e5 100644 --- a/code/datums/shuttles.dm +++ b/code/datums/shuttles.dm @@ -9,8 +9,9 @@ var/admin_notes /datum/map_template/shuttle/New() - shuttle_id = "[port_id]_[suffix]" - mappath = "[prefix][shuttle_id].dmm" + if(port_id && suffix) + shuttle_id = "[port_id]_[suffix]" + mappath = "[prefix][shuttle_id].dmm" . = ..() /datum/map_template/shuttle/emergency diff --git a/code/modules/awaymissions/maploader/reader.dm b/code/modules/awaymissions/maploader/reader.dm index 7efff7cc27b..4c448e6416b 100644 --- a/code/modules/awaymissions/maploader/reader.dm +++ b/code/modules/awaymissions/maploader/reader.dm @@ -30,6 +30,11 @@ GLOBAL_DATUM_INIT(_preloader, /datum/dmm_suite/preloader, new()) var/fname = "Lambda" if(isfile(tfile)) fname = "[tfile]" + // Make sure we dont load a dir up + var/lastchar = copytext(dmm_file, -1) + if(lastchar == "/" || lastchar == "\\") + log_debug("Attempted to load map template without filename (Attempted [tfile])") + return tfile = file2text(tfile) if(!length(tfile)) throw EXCEPTION("Map path '[fname]' does not exist!") diff --git a/code/modules/unit_tests/_unit_tests.dm b/code/modules/unit_tests/_unit_tests.dm index 5b1409af4e7..80467d19846 100644 --- a/code/modules/unit_tests/_unit_tests.dm +++ b/code/modules/unit_tests/_unit_tests.dm @@ -3,6 +3,7 @@ #ifdef UNIT_TESTS #include "component_tests.dm" +#include "map_templates.dm" #include "reagent_id_typos.dm" #include "spawn_humans.dm" #include "sql.dm" diff --git a/code/modules/unit_tests/map_templates.dm b/code/modules/unit_tests/map_templates.dm new file mode 100644 index 00000000000..b590526a46b --- /dev/null +++ b/code/modules/unit_tests/map_templates.dm @@ -0,0 +1,7 @@ +/datum/unit_test/map_templates/Run() + var/list/datum/map_template/templates = subtypesof(/datum/map_template) + for(var/I in templates) + var/datum/map_template/MT = new I // The new is important here to ensure stuff gets set properly + // Check if it even has a path and if so, does it exist + if(MT.mappath && !fexists(MT.mappath)) + Fail("The map file for [MT.type] does not exist!") From d5b470bc148dc858f328abd72626e2564a4e3b00 Mon Sep 17 00:00:00 2001 From: AffectedArc07 Date: Sat, 25 Jul 2020 18:20:08 +0100 Subject: [PATCH 2/3] Failure test case --- _maps/map_files/shuttles/{emergency_clown.dmm => break.dmm} | 0 code/modules/awaymissions/maploader/reader.dm | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename _maps/map_files/shuttles/{emergency_clown.dmm => break.dmm} (100%) diff --git a/_maps/map_files/shuttles/emergency_clown.dmm b/_maps/map_files/shuttles/break.dmm similarity index 100% rename from _maps/map_files/shuttles/emergency_clown.dmm rename to _maps/map_files/shuttles/break.dmm diff --git a/code/modules/awaymissions/maploader/reader.dm b/code/modules/awaymissions/maploader/reader.dm index 4c448e6416b..f034c4f39d1 100644 --- a/code/modules/awaymissions/maploader/reader.dm +++ b/code/modules/awaymissions/maploader/reader.dm @@ -31,7 +31,7 @@ GLOBAL_DATUM_INIT(_preloader, /datum/dmm_suite/preloader, new()) if(isfile(tfile)) fname = "[tfile]" // Make sure we dont load a dir up - var/lastchar = copytext(dmm_file, -1) + var/lastchar = copytext(fname, -1) if(lastchar == "/" || lastchar == "\\") log_debug("Attempted to load map template without filename (Attempted [tfile])") return From c8b4696559bcb552feb9d938315293857ceced35 Mon Sep 17 00:00:00 2001 From: AffectedArc07 Date: Sat, 25 Jul 2020 18:29:32 +0100 Subject: [PATCH 3/3] Task Failed Successfully --- _maps/map_files/shuttles/{break.dmm => emergency_clown.dmm} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename _maps/map_files/shuttles/{break.dmm => emergency_clown.dmm} (100%) diff --git a/_maps/map_files/shuttles/break.dmm b/_maps/map_files/shuttles/emergency_clown.dmm similarity index 100% rename from _maps/map_files/shuttles/break.dmm rename to _maps/map_files/shuttles/emergency_clown.dmm