mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-16 04:34:21 +00:00
Fixes a runtime in "reference decoder" circuit (#35754)
* Adds "safe" option to hextostr and hex2num * Fixes a runtime in ICs
This commit is contained in:
@@ -12,7 +12,8 @@
|
||||
//Returns an integer given a hex input, supports negative values "-ff"
|
||||
//skips preceding invalid characters
|
||||
//breaks when hittin invalid characters thereafter
|
||||
/proc/hex2num(hex)
|
||||
// If safe=TRUE, returns null on incorrect input strings instead of CRASHing
|
||||
/proc/hex2num(hex, safe=FALSE)
|
||||
. = 0
|
||||
var/place = 1
|
||||
for(var/i in length(hex) to 1 step -1)
|
||||
@@ -26,6 +27,9 @@
|
||||
num -= 55 //A-F
|
||||
if(45)
|
||||
return . * -1 // -
|
||||
else
|
||||
if(safe)
|
||||
return null
|
||||
else
|
||||
CRASH("Malformed hex number")
|
||||
|
||||
@@ -582,12 +586,16 @@
|
||||
r+= num2hex(c)
|
||||
return r
|
||||
|
||||
/proc/hextostr(str)
|
||||
// Decodes hex to raw byte string.
|
||||
// If safe=TRUE, returns null on incorrect input strings instead of CRASHing
|
||||
/proc/hextostr(str, safe=FALSE)
|
||||
if(!istext(str)||!str)
|
||||
return
|
||||
var/r
|
||||
var/c
|
||||
for(var/i = 1 to length(str)/2)
|
||||
c= hex2num(copytext(str,i*2-1,i*2+1))
|
||||
c = hex2num(copytext(str,i*2-1,i*2+1), safe)
|
||||
if(isnull(c))
|
||||
return null
|
||||
r += ascii2text(c)
|
||||
return r
|
||||
|
||||
@@ -97,7 +97,7 @@
|
||||
|
||||
/obj/item/integrated_circuit/converter/refdecode/do_work()
|
||||
pull_data()
|
||||
dec=XorEncrypt(hextostr(get_pin_data(IC_INPUT, 1)),SScircuit.cipherkey)
|
||||
dec = XorEncrypt(hextostr(get_pin_data(IC_INPUT, 1), TRUE), SScircuit.cipherkey)
|
||||
set_pin_data(IC_OUTPUT, 1, WEAKREF(locate(dec)))
|
||||
push_data()
|
||||
activate_pin(2)
|
||||
|
||||
Reference in New Issue
Block a user