Closes up stuff in SDQL2

This commit is contained in:
Crazylemon64
2017-07-19 23:00:55 -07:00
parent fc5f87a4ec
commit a4b418dd7f
2 changed files with 23 additions and 6 deletions
+13 -4
View File
@@ -89,7 +89,8 @@
if("delete")
for(var/d in objs)
qdel(d)
if(!datum_is_forbidden(d))
qdel(d)
if("select")
var/text = ""
@@ -117,6 +118,9 @@
if("set" in query_tree)
var/list/set_list = query_tree["set"]
for(var/d in objs)
// Forbid explicitly modifying an admin datum's vars
if(datum_is_forbidden(d))
return
for(var/list/sets in set_list)
var/datum/temp = d
var/i = 0
@@ -124,11 +128,11 @@
if(++i == sets.len)
if(istype(temp, /turf) && (v == "x" || v == "y" || v == "z"))
continue
if(istype(temp.vars[v], /datum/admins))
continue
if(!datum_is_forbidden(temp.vars[v]))
return
temp.vars[v] = SDQL_expression(d, set_list[sets])
break
if(temp.vars.Find(v) && (istype(temp.vars[v], /datum) || istype(temp.vars[v], /client)) && !istype(temp.vars[v], /datum/admins))
if(temp.vars.Find(v) && (istype(temp.vars[v], /datum) || istype(temp.vars[v], /client)) && !datum_is_forbidden(temp.vars[v]))
temp = temp.vars[v]
else
break
@@ -436,6 +440,11 @@
for(var/arg in arguments)
new_args[++new_args.len] = SDQL_expression(source, arg)
for(var/p in forbidden_varedit_object_types)
if(istype(object, p))
to_chat(usr, "<span class='warning'>It is forbidden to run this object's procs.</span>")
return
if(object == world) // Global proc.
procname = "/proc/[procname]"
return call(procname)(arglist(new_args))