[MIRROR] [s] Patch a server crashing exploit (#7794)

* [s] Patch a server crashing exploit (#61057)

if you create a bunch of signallers then spam the send signal button you can grind the server to a halt at low numbers and crash it at high numbers of signallers

This is an imperfect fix as a proper fix would refactor signal datums to use a subsystem but I dont feel like rewriting all of signal code thank you very much

Co-authored-by: Zephyr <12817816+ZephyrTFA@ users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>

* [s] Patch a server crashing exploit

Co-authored-by: TiviPlus <57223640+TiviPlus@users.noreply.github.com>
Co-authored-by: Zephyr <12817816+ZephyrTFA@ users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
This commit is contained in:
SkyratBot
2021-08-26 22:49:14 +01:00
committed by GitHub
co-authored by Zephyr Mothblocks TiviPlus
parent 71c62fed86
commit 68db67c4eb
4 changed files with 12 additions and 2 deletions
@@ -34,7 +34,7 @@
. = ..()
freq = add_input_port("Frequency", PORT_TYPE_NUMBER, default = FREQ_SIGNALER)
code = add_input_port("Code", PORT_TYPE_NUMBER, default = DEFAULT_SIGNALER_CODE)
TRIGGER_CIRCUIT_COMPONENT(src, null)
INVOKE_ASYNC(src, .proc/apply_signal_component)
// These are cleaned up on the parent
trigger_input = add_input_port("Send", PORT_TYPE_SIGNAL)
trigger_output = add_output_port("Received", PORT_TYPE_SIGNAL)
@@ -43,6 +43,9 @@
SSradio.remove_object(src, current_freq)
return ..()
/obj/item/circuit_component/radio/proc/apply_signal_component()
TRIGGER_CIRCUIT_COMPONENT(src, null)
/obj/item/circuit_component/radio/input_received(datum/port/input/port)
. = ..()
freq.set_value(sanitize_frequency(freq.value, TRUE))