mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-11 10:11:09 +00:00
A bunch of sanitization fixes (#89477)
## About The Pull Request - Adds sanitization to windoor names and circuit shells. - Fixes a (mostly useless) href exploit with wizard's contracts. ## Why It's Good For The Game Sanitizing input is probably good. ## Changelog 🆑 fix: Fixed a few sanitization issues. /🆑
This commit is contained in:
@@ -24,11 +24,19 @@
|
|||||||
#define FUGITIVE_RESULT_FUGITIVE_VICTORY 7
|
#define FUGITIVE_RESULT_FUGITIVE_VICTORY 7
|
||||||
#define FUGITIVE_RESULT_MAJOR_FUGITIVE 8
|
#define FUGITIVE_RESULT_MAJOR_FUGITIVE 8
|
||||||
|
|
||||||
|
// Wizard's contract school types
|
||||||
#define APPRENTICE_DESTRUCTION "destruction"
|
#define APPRENTICE_DESTRUCTION "destruction"
|
||||||
#define APPRENTICE_BLUESPACE "bluespace"
|
#define APPRENTICE_BLUESPACE "bluespace"
|
||||||
#define APPRENTICE_ROBELESS "robeless"
|
#define APPRENTICE_ROBELESS "robeless"
|
||||||
#define APPRENTICE_HEALING "healing"
|
#define APPRENTICE_HEALING "healing"
|
||||||
|
|
||||||
|
#define ALL_APPRENTICE_TYPES list( \
|
||||||
|
APPRENTICE_DESTRUCTION, \
|
||||||
|
APPRENTICE_BLUESPACE, \
|
||||||
|
APPRENTICE_ROBELESS, \
|
||||||
|
APPRENTICE_HEALING, \
|
||||||
|
)
|
||||||
|
|
||||||
//Pirates
|
//Pirates
|
||||||
|
|
||||||
///Minimum amount the pirates will demand
|
///Minimum amount the pirates will demand
|
||||||
|
|||||||
@@ -319,7 +319,7 @@
|
|||||||
attached_circuit.add_component(to_add)
|
attached_circuit.add_component(to_add)
|
||||||
RegisterSignal(circuitboard, COMSIG_CIRCUIT_ADD_COMPONENT_MANUALLY, PROC_REF(on_circuit_add_component_manually))
|
RegisterSignal(circuitboard, COMSIG_CIRCUIT_ADD_COMPONENT_MANUALLY, PROC_REF(on_circuit_add_component_manually))
|
||||||
if(attached_circuit.display_name != "")
|
if(attached_circuit.display_name != "")
|
||||||
parent_atom.name = "[initial(parent_atom.name)] ([attached_circuit.display_name])"
|
parent_atom.name = "[initial(parent_atom.name)] ([strip_html(attached_circuit.display_name)])"
|
||||||
attached_circuit.set_locked(FALSE)
|
attached_circuit.set_locked(FALSE)
|
||||||
|
|
||||||
if((shell_flags & SHELL_FLAG_CIRCUIT_UNREMOVABLE) || circuitboard.admin_only)
|
if((shell_flags & SHELL_FLAG_CIRCUIT_UNREMOVABLE) || circuitboard.admin_only)
|
||||||
|
|||||||
@@ -142,7 +142,7 @@ GLOBAL_LIST_EMPTY(announcement_systems)
|
|||||||
data["node_toggle"] = announce_research_node
|
data["node_toggle"] = announce_research_node
|
||||||
return data
|
return data
|
||||||
|
|
||||||
/obj/machinery/announcement_system/ui_act(action, param)
|
/obj/machinery/announcement_system/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
|
||||||
. = ..()
|
. = ..()
|
||||||
if(.)
|
if(.)
|
||||||
return
|
return
|
||||||
@@ -154,17 +154,17 @@ GLOBAL_LIST_EMPTY(announcement_systems)
|
|||||||
return
|
return
|
||||||
switch(action)
|
switch(action)
|
||||||
if("ArrivalText")
|
if("ArrivalText")
|
||||||
var/new_message = trim(html_encode(param["newText"]), MAX_MESSAGE_LEN)
|
var/new_message = trim(html_encode(params["newText"]), MAX_MESSAGE_LEN)
|
||||||
if(new_message)
|
if(new_message)
|
||||||
arrival = new_message
|
arrival = new_message
|
||||||
usr.log_message("updated the arrivals announcement to: [new_message]", LOG_GAME)
|
usr.log_message("updated the arrivals announcement to: [new_message]", LOG_GAME)
|
||||||
if("NewheadText")
|
if("NewheadText")
|
||||||
var/new_message = trim(html_encode(param["newText"]), MAX_MESSAGE_LEN)
|
var/new_message = trim(html_encode(params["newText"]), MAX_MESSAGE_LEN)
|
||||||
if(new_message)
|
if(new_message)
|
||||||
newhead = new_message
|
newhead = new_message
|
||||||
usr.log_message("updated the head announcement to: [new_message]", LOG_GAME)
|
usr.log_message("updated the head announcement to: [new_message]", LOG_GAME)
|
||||||
if("node_message")
|
if("node_message")
|
||||||
var/new_message = trim(html_encode(param["newText"]), MAX_MESSAGE_LEN)
|
var/new_message = trim(html_encode(params["newText"]), MAX_MESSAGE_LEN)
|
||||||
if(new_message)
|
if(new_message)
|
||||||
node_message = new_message
|
node_message = new_message
|
||||||
usr.log_message("updated the researched node announcement to: [node_message]", LOG_GAME)
|
usr.log_message("updated the researched node announcement to: [node_message]", LOG_GAME)
|
||||||
|
|||||||
@@ -375,7 +375,7 @@
|
|||||||
data["active_status_4"] = scan_active & KIOSK_SCANNING_REAGENTS // Reagents/hallucination Scan Check
|
data["active_status_4"] = scan_active & KIOSK_SCANNING_REAGENTS // Reagents/hallucination Scan Check
|
||||||
return data
|
return data
|
||||||
|
|
||||||
/obj/machinery/medical_kiosk/ui_act(action,active)
|
/obj/machinery/medical_kiosk/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
|
||||||
. = ..()
|
. = ..()
|
||||||
if(.)
|
if(.)
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -321,7 +321,7 @@
|
|||||||
if(created_name)
|
if(created_name)
|
||||||
windoor.name = created_name
|
windoor.name = created_name
|
||||||
else if(electronics.passed_name)
|
else if(electronics.passed_name)
|
||||||
windoor.name = electronics.passed_name
|
windoor.name = sanitize(electronics.passed_name)
|
||||||
if(electronics.one_access)
|
if(electronics.one_access)
|
||||||
windoor.req_one_access = electronics.accesses
|
windoor.req_one_access = electronics.accesses
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -47,10 +47,17 @@
|
|||||||
|
|
||||||
/obj/item/antag_spawner/contract/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
|
/obj/item/antag_spawner/contract/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state)
|
||||||
. = ..()
|
. = ..()
|
||||||
if(used || polling || !ishuman(usr))
|
if(.)
|
||||||
return
|
return
|
||||||
INVOKE_ASYNC(src, PROC_REF(poll_for_student), usr, params["school"])
|
switch(action)
|
||||||
SStgui.close_uis(src)
|
if("buy")
|
||||||
|
if(used || polling || !ishuman(ui.user))
|
||||||
|
return
|
||||||
|
var/selected_school = params["school"]
|
||||||
|
if(!(selected_school in ALL_APPRENTICE_TYPES))
|
||||||
|
return
|
||||||
|
INVOKE_ASYNC(src, PROC_REF(poll_for_student), ui.user, params["school"])
|
||||||
|
SStgui.close_uis(src)
|
||||||
|
|
||||||
/obj/item/antag_spawner/contract/proc/poll_for_student(mob/living/carbon/human/teacher, apprentice_school)
|
/obj/item/antag_spawner/contract/proc/poll_for_student(mob/living/carbon/human/teacher, apprentice_school)
|
||||||
balloon_alert(teacher, "contacting apprentice...")
|
balloon_alert(teacher, "contacting apprentice...")
|
||||||
|
|||||||
@@ -720,7 +720,7 @@ GLOBAL_LIST_EMPTY_TYPED(integrated_circuits, /obj/item/integrated_circuit)
|
|||||||
|
|
||||||
/// Sets the display name that appears on the shell.
|
/// Sets the display name that appears on the shell.
|
||||||
/obj/item/integrated_circuit/proc/set_display_name(new_name)
|
/obj/item/integrated_circuit/proc/set_display_name(new_name)
|
||||||
display_name = copytext(new_name, 1, label_max_length)
|
display_name = copytext_char(new_name, 1, label_max_length)
|
||||||
if(!shell)
|
if(!shell)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user