From 254536072edd8a0c70479f2933e8bdf09b293fc3 Mon Sep 17 00:00:00 2001 From: ShizCalev Date: Wed, 15 Jul 2020 18:20:41 -0400 Subject: [PATCH] [s] sanity checks vv_edit_var() values (#52255) cl ShizCalev fix: Added some sanity checking for varedit values. /cl * sanity checks vv_edit_var() values * this should be an or * one more fix --- .../controllers/configuration/config_entry.dm | 6 ++-- code/controllers/subsystem.dm | 6 ++-- code/controllers/subsystem/blackbox.dm | 4 +-- code/controllers/subsystem/title.dm | 2 +- code/game/atoms.dm | 2 +- code/game/atoms_movable.dm | 8 +++--- code/game/machinery/doors/airlock.dm | 2 +- code/game/machinery/status_display.dm | 2 +- code/game/objects/items/cards_ids.dm | 2 +- code/game/objects/objs.dm | 6 +--- code/game/turfs/closed/_closed.dm | 2 +- code/modules/client/client_procs.dm | 8 +++--- code/modules/lighting/lighting_area.dm | 2 +- code/modules/lighting/lighting_atom.dm | 6 ++-- code/modules/mob/dead/observer/observer.dm | 8 +++--- code/modules/mob/living/living.dm | 28 ++++++------------- code/modules/movespeed/_movespeed_modifier.dm | 4 +++ code/modules/power/cell.dm | 2 +- code/modules/projectiles/guns/energy.dm | 2 +- code/modules/projectiles/guns/magic.dm | 4 +-- code/modules/recycling/conveyor2.dm | 4 +-- code/modules/shuttle/arrivals.dm | 2 +- 22 files changed, 51 insertions(+), 61 deletions(-) diff --git a/code/controllers/configuration/config_entry.dm b/code/controllers/configuration/config_entry.dm index b6245085b38..c03237a80f2 100644 --- a/code/controllers/configuration/config_entry.dm +++ b/code/controllers/configuration/config_entry.dm @@ -78,7 +78,7 @@ var/auto_trim = TRUE /datum/config_entry/string/vv_edit_var(var_name, var_value) - return var_name != "auto_trim" && ..() + return var_name != NAMEOF(src, auto_trim) && ..() /datum/config_entry/string/ValidateAndSet(str_val) if(!VASProcCallGuard(str_val)) @@ -105,7 +105,7 @@ return FALSE /datum/config_entry/number/vv_edit_var(var_name, var_value) - var/static/list/banned_edits = list("max_val", "min_val", "integer") + var/static/list/banned_edits = list(NAMEOF(src, max_val), NAMEOF(src, min_val), NAMEOF(src, integer)) return !(var_name in banned_edits) && ..() /datum/config_entry/flag @@ -194,4 +194,4 @@ return FALSE /datum/config_entry/keyed_list/vv_edit_var(var_name, var_value) - return var_name != "splitter" && ..() + return var_name != NAMEOF(src, splitter) && ..() diff --git a/code/controllers/subsystem.dm b/code/controllers/subsystem.dm index 085cdbd3e54..574ed33311c 100644 --- a/code/controllers/subsystem.dm +++ b/code/controllers/subsystem.dm @@ -261,10 +261,10 @@ /datum/controller/subsystem/vv_edit_var(var_name, var_value) switch (var_name) - if ("can_fire") + if (NAMEOF(src, can_fire)) //this is so the subsystem doesn't rapid fire to make up missed ticks causing more lag if (var_value) next_fire = world.time + wait - if ("queued_priority") //editing this breaks things. - return 0 + if (NAMEOF(src, queued_priority)) //editing this breaks things. + return FALSE . = ..() diff --git a/code/controllers/subsystem/blackbox.dm b/code/controllers/subsystem/blackbox.dm index be019902b6d..599b3494bbc 100644 --- a/code/controllers/subsystem/blackbox.dm +++ b/code/controllers/subsystem/blackbox.dm @@ -69,9 +69,9 @@ SUBSYSTEM_DEF(blackbox) /datum/controller/subsystem/blackbox/vv_edit_var(var_name, var_value) switch(var_name) - if("feedback") + if(NAMEOF(src, feedback)) return FALSE - if("sealed") + if(NAMEOF(src, sealed)) if(var_value) return Seal() return FALSE diff --git a/code/controllers/subsystem/title.dm b/code/controllers/subsystem/title.dm index 24a2e7e3d2c..03c30887bae 100644 --- a/code/controllers/subsystem/title.dm +++ b/code/controllers/subsystem/title.dm @@ -47,7 +47,7 @@ SUBSYSTEM_DEF(title) . = ..() if(.) switch(var_name) - if("icon") + if(NAMEOF(src, icon)) if(splash_turf) splash_turf.icon = icon diff --git a/code/game/atoms.dm b/code/game/atoms.dm index cb0c7deaefa..71ee3a4e67b 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -974,7 +974,7 @@ flags_1 |= ADMIN_SPAWNED_1 . = ..() switch(var_name) - if("color") + if(NAMEOF(src, color)) add_atom_colour(color, ADMIN_COLOUR_PRIORITY) /** diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index f3292b260ab..ea40d92df91 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -127,25 +127,25 @@ if((var_name in careful_edits) && (var_value % world.icon_size) != 0) return FALSE switch(var_name) - if("x") + if(NAMEOF(src, x)) var/turf/T = locate(var_value, y, z) if(T) forceMove(T) return TRUE return FALSE - if("y") + if(NAMEOF(src, y)) var/turf/T = locate(x, var_value, z) if(T) forceMove(T) return TRUE return FALSE - if("z") + if(NAMEOF(src, z)) var/turf/T = locate(x, y, var_value) if(T) forceMove(T) return TRUE return FALSE - if("loc") + if(NAMEOF(src, loc)) if(istype(var_value, /atom)) forceMove(var_value) return TRUE diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index fba36205143..33329319cfa 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -188,7 +188,7 @@ /obj/machinery/door/airlock/vv_edit_var(var_name) . = ..() switch (var_name) - if ("cyclelinkeddir") + if (NAMEOF(src, cyclelinkeddir)) cyclelinkairlock() /obj/machinery/door/airlock/check_access_ntnet(datum/netdata/data) diff --git a/code/game/machinery/status_display.dm b/code/game/machinery/status_display.dm index e04ed7c9745..fa4822d6338 100644 --- a/code/game/machinery/status_display.dm +++ b/code/game/machinery/status_display.dm @@ -289,7 +289,7 @@ if(!.) return switch(var_name) - if("shuttle_id") + if(NAMEOF(src, shuttle_id)) update() /obj/machinery/status_display/shuttle/connect_to_shuttle(obj/docking_port/mobile/port, obj/docking_port/stationary/dock, idnum, override) diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm index 2d657c3e5de..5b792cd3a82 100644 --- a/code/game/objects/items/cards_ids.dm +++ b/code/game/objects/items/cards_ids.dm @@ -108,7 +108,7 @@ . = ..() if(.) switch(var_name) - if("assignment","registered_name","registered_age") + if(NAMEOF(src, assignment),NAMEOF(src, registered_name),NAMEOF(src, registered_age)) update_label() /obj/item/card/id/attackby(obj/item/W, mob/user, params) diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 12ab2c95e99..294adb944cc 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -47,13 +47,9 @@ if("anchored") setAnchored(vval) return TRUE - if("obj_flags") + if(NAMEOF(src, obj_flags)) if ((obj_flags & DANGEROUS_POSSESSION) && !(vval & DANGEROUS_POSSESSION)) return FALSE - if("control_object") - var/obj/O = vval - if(istype(O) && (O.obj_flags & DANGEROUS_POSSESSION)) - return FALSE return ..() /obj/Initialize() diff --git a/code/game/turfs/closed/_closed.dm b/code/game/turfs/closed/_closed.dm index 7067fcfa28e..c38944892de 100644 --- a/code/game/turfs/closed/_closed.dm +++ b/code/game/turfs/closed/_closed.dm @@ -73,7 +73,7 @@ . = ..() if(.) switch(var_name) - if("icon") + if(NAMEOF(src, icon)) SStitle.icon = icon /turf/closed/indestructible/riveted diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index f2dd78b355b..602d4d4f6cc 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -908,13 +908,13 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) /client/vv_edit_var(var_name, var_value) switch (var_name) - if ("holder") + if (NAMEOF(src, holder)) return FALSE - if ("ckey") + if (NAMEOF(src, ckey)) return FALSE - if ("key") + if (NAMEOF(src, key)) return FALSE - if("view") + if(NAMEOF(src, view)) view_size.setDefault(var_value) return TRUE . = ..() diff --git a/code/modules/lighting/lighting_area.dm b/code/modules/lighting/lighting_area.dm index 13676a5cb4f..7e544564836 100644 --- a/code/modules/lighting/lighting_area.dm +++ b/code/modules/lighting/lighting_area.dm @@ -24,7 +24,7 @@ /area/vv_edit_var(var_name, var_value) switch(var_name) - if("dynamic_lighting") + if(NAMEOF(src, dynamic_lighting)) set_dynamic_lighting(var_value) return TRUE return ..() diff --git a/code/modules/lighting/lighting_atom.dm b/code/modules/lighting/lighting_atom.dm index bd44d1a8adb..05719b4d248 100644 --- a/code/modules/lighting/lighting_atom.dm +++ b/code/modules/lighting/lighting_atom.dm @@ -89,17 +89,17 @@ /atom/vv_edit_var(var_name, var_value) switch (var_name) - if ("light_range") + if (NAMEOF(src, light_range)) set_light(l_range=var_value) datum_flags |= DF_VAR_EDITED return TRUE - if ("light_power") + if (NAMEOF(src, light_power)) set_light(l_power=var_value) datum_flags |= DF_VAR_EDITED return TRUE - if ("light_color") + if (NAMEOF(src, light_color)) set_light(l_color=var_value) datum_flags |= DF_VAR_EDITED return TRUE diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index adf40cc07de..db83b10119a 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -802,13 +802,13 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp /mob/dead/observer/vv_edit_var(var_name, var_value) . = ..() switch(var_name) - if("icon") + if(NAMEOF(src, icon)) ghostimage_default.icon = icon ghostimage_simple.icon = icon - if("icon_state") + if(NAMEOF(src, icon_state)) ghostimage_default.icon_state = icon_state ghostimage_simple.icon_state = icon_state - if("fun_verbs") + if(NAMEOF(src, fun_verbs)) if(fun_verbs) verbs += /mob/dead/observer/verb/boo verbs += /mob/dead/observer/verb/possess @@ -928,7 +928,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp /mob/dead/observer/vv_edit_var(var_name, var_value) . = ..() - if(var_name == "invisibility") + if(var_name == NAMEOF(src, invisibility)) set_invisibility(invisibility) // updates light /proc/set_observer_default_invisibility(amount, message=null) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index c241ad714c7..dace9d9c70e 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1372,39 +1372,29 @@ /mob/living/vv_edit_var(var_name, var_value) switch(var_name) - if ("maxHealth") + if (NAMEOF(src, maxHealth)) if (!isnum(var_value) || var_value <= 0) return FALSE - if("stat") + if(NAMEOF(src, stat)) if((stat == DEAD) && (var_value < DEAD))//Bringing the dead back to life remove_from_dead_mob_list() add_to_alive_mob_list() if((stat < DEAD) && (var_value == DEAD))//Kill he remove_from_alive_mob_list() add_to_dead_mob_list() + if(NAMEOF(src, health)) //this doesn't work. gotta use procs instead. + return FALSE . = ..() switch(var_name) - if("knockdown") - SetParalyzed(var_value) - if("stun") - SetStun(var_value) - if("unconscious") - SetUnconscious(var_value) - if("sleeping") - SetSleeping(var_value) - if("eye_blind") + if(NAMEOF(src, eye_blind)) set_blindness(var_value) - if("eye_damage") - var/obj/item/organ/eyes/E = getorganslot(ORGAN_SLOT_EYES) - if(E) - E.setOrganDamage(var_value) - if("eye_blurry") + if(NAMEOF(src, eye_blurry)) set_blurriness(var_value) - if("maxHealth") + if(NAMEOF(src, maxHealth)) updatehealth() - if("resize") + if(NAMEOF(src, resize)) update_transform() - if("lighting_alpha") + if(NAMEOF(src, lighting_alpha)) sync_lighting_plane_alpha() /mob/living/vv_get_header() diff --git a/code/modules/movespeed/_movespeed_modifier.dm b/code/modules/movespeed/_movespeed_modifier.dm index 0976f4d0671..a338919c4b2 100644 --- a/code/modules/movespeed/_movespeed_modifier.dm +++ b/code/modules/movespeed/_movespeed_modifier.dm @@ -144,6 +144,10 @@ GLOBAL_LIST_EMPTY(movespeed_modification_cache) /// Handles the special case of editing the movement var /mob/vv_edit_var(var_name, var_value) + if(var_name == NAMEOF(src, control_object)) + var/obj/O = var_name + if(!istype(O) || (O.obj_flags & DANGEROUS_POSSESSION)) + return FALSE var/slowdown_edit = (var_name == NAMEOF(src, cached_multiplicative_slowdown)) var/diff if(slowdown_edit && isnum(cached_multiplicative_slowdown) && isnum(var_value)) diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index e3171ae938a..0dd8e24168e 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -42,7 +42,7 @@ /obj/item/stock_parts/cell/vv_edit_var(var_name, var_value) switch(var_name) - if("self_recharge") + if(NAMEOF(src, self_recharge)) if(var_value) START_PROCESSING(SSobj, src) else diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index 488d7ca3e4e..eff72906d55 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -208,7 +208,7 @@ /obj/item/gun/energy/vv_edit_var(var_name, var_value) switch(var_name) - if("selfcharge") + if(NAMEOF(src, selfcharge)) if(var_value) START_PROCESSING(SSobj, src) else diff --git a/code/modules/projectiles/guns/magic.dm b/code/modules/projectiles/guns/magic.dm index f3bc7140a5a..5a49473ad13 100644 --- a/code/modules/projectiles/guns/magic.dm +++ b/code/modules/projectiles/guns/magic.dm @@ -86,6 +86,6 @@ /obj/item/gun/magic/vv_edit_var(var_name, var_value) . = ..() - switch (var_name) - if ("charges") + switch(var_name) + if(NAMEOF(src, charges)) recharge_newshot() diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index c3012d16251..a0ba085e18c 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -64,7 +64,7 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) . = ..() /obj/machinery/conveyor/vv_edit_var(var_name, var_value) - if (var_name == "id") + if (var_name == NAMEOF(src, id)) // if "id" is varedited, update our list membership LAZYREMOVE(GLOB.conveyors_by_id[id], src) . = ..() @@ -259,7 +259,7 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) . = ..() /obj/machinery/conveyor_switch/vv_edit_var(var_name, var_value) - if (var_name == "id") + if (var_name == NAMEOF(src, id)) // if "id" is varedited, update our list membership LAZYREMOVE(GLOB.conveyors_by_id[id], src) . = ..() diff --git a/code/modules/shuttle/arrivals.dm b/code/modules/shuttle/arrivals.dm index 7092730c92d..9956f83f66c 100644 --- a/code/modules/shuttle/arrivals.dm +++ b/code/modules/shuttle/arrivals.dm @@ -202,6 +202,6 @@ /obj/docking_port/mobile/arrivals/vv_edit_var(var_name, var_value) switch(var_name) - if("perma_docked") + if(NAMEOF(src, perma_docked)) SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("arrivals shuttle", "[var_value ? "stopped" : "started"]")) return ..()