From a8cc3cd6c2c21ca30d5eda4d587386c65fa533aa Mon Sep 17 00:00:00 2001 From: Cyberboss Date: Tue, 11 Apr 2017 19:20:46 -0400 Subject: [PATCH] [s] Fixes datum var hiding (#26027) * . * Buildmode * SDQL global. now refers to GLOB @kevinz000 * Another SDQL thing * Fix --- code/controllers/configuration.dm | 8 ++++---- code/controllers/globals.dm | 4 ++-- code/datums/datumvars.dm | 6 +++++- code/modules/admin/verbs/SDQL2/SDQL_2.dm | 12 ++++++++---- code/modules/admin/verbs/buildmode.dm | 12 ++++++++---- code/modules/admin/verbs/massmodvar.dm | 2 +- code/modules/admin/verbs/modifyvariables.dm | 3 +++ 7 files changed, 31 insertions(+), 16 deletions(-) diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index a51549cc99f..81a806f8671 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -5,10 +5,10 @@ #define SECURITY_HAS_MAINT_ACCESS 2 #define EVERYONE_HAS_MAINT_ACCESS 4 -/datum/configuration/vv_get_var(var_name) - var/static/list/banned_views = list("autoadmin", "autoadmin_rank") - if(var_name in banned_views) - return debug_variable(var_name, "SECRET", 0, src) +/datum/configuration/can_vv_get(var_name) + var/static/list/banned_gets = list("autoadmin", "autoadmin_rank") + if (var_name in banned_gets) + return FALSE return ..() /datum/configuration/vv_edit_var(var_name, var_value) diff --git a/code/controllers/globals.dm b/code/controllers/globals.dm index 3799230ac4d..b25d51bc9be 100644 --- a/code/controllers/globals.dm +++ b/code/controllers/globals.dm @@ -41,9 +41,9 @@ GLOBAL_REAL(GLOB, /datum/controller/global_vars) num_globals = vars.len - gvars_datum_in_built_vars.len stat("Globals:", statclick.update("Count: [num_globals]")) -/datum/controller/global_vars/vv_get_var(var_name) +/datum/controller/global_vars/can_vv_get(var_name) if(var_name in gvars_datum_protected_varlist) - return debug_variable(var_name, "SECRET", 0, src) + return FALSE return ..() /datum/controller/global_vars/vv_edit_var(var_name, var_value) diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index bd2d737f1b9..b22b616e7bd 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -2,6 +2,9 @@ var/var_edited = FALSE //Warrenty void if seal is broken var/fingerprintslast = null +/datum/proc/can_vv_get(var_name) + return TRUE + /datum/proc/vv_edit_var(var_name, var_value) //called whenever a var is edited switch(var_name) if ("vars") @@ -155,7 +158,8 @@ names = sortList(names) for (var/V in names) - variable_html += D.vv_get_var(V) + if(D.can_vv_get(V)) + variable_html += D.vv_get_var(V) var/html = {" diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2.dm b/code/modules/admin/verbs/SDQL2/SDQL_2.dm index a2d24425718..3e3db4172c0 100644 --- a/code/modules/admin/verbs/SDQL2/SDQL_2.dm +++ b/code/modules/admin/verbs/SDQL2/SDQL_2.dm @@ -419,10 +419,9 @@ /proc/SDQL_var(datum/object, list/expression, start = 1, source) var/v - var/static/list/exclude = list("usr", "src", "marked", "global") var/long = start < expression.len if(object == world && long && expression[start + 1] == ".") - to_chat(usr, "Sorry, but global variables are not supported at the moment.") + to_chat(usr, "Sorry, but world variables are not supported at the moment.") return null else if(expression [start] == "{" && long) if(lowertext(copytext(expression[start + 1], 1, 3)) != "0x") @@ -434,7 +433,10 @@ return null start++ else if((!long || expression[start + 1] == ".") && (expression[start] in object.vars)) - v = object.vars[expression[start]] + if(object.can_vv_get(expression[start])) + v = object.vars[expression[start]] + else + v = "SECRET" else if(long && expression[start + 1] == ":" && hascall(object, expression[start])) v = expression[start] else if(!long || expression[start + 1] == ".") @@ -448,8 +450,10 @@ v = usr.client.holder.marked_datum else return null - if("global") + if("world") v = world + if("global") + v = GLOB else return null else if(object == world) // Shitty ass hack kill me. diff --git a/code/modules/admin/verbs/buildmode.dm b/code/modules/admin/verbs/buildmode.dm index 64ba4349229..968c03cac1c 100644 --- a/code/modules/admin/verbs/buildmode.dm +++ b/code/modules/admin/verbs/buildmode.dm @@ -305,14 +305,18 @@ if(VAR_BUILDMODE) if(left_click) //I cant believe this shit actually compiles. if(object.vars.Find(varholder)) - log_admin("Build Mode: [key_name(user)] modified [object.name]'s [varholder] to [valueholder]") - object.vars[varholder] = valueholder + if(object.vv_edit_var(varholder, valueholder)) + log_admin("Build Mode: [key_name(user)] modified [object.name]'s [varholder] to [valueholder]") + else + to_chat(user, "Varedit rejected") else to_chat(user, "[initial(object.name)] does not have a var called '[varholder]'") if(right_click) if(object.vars.Find(varholder)) - log_admin("Build Mode: [key_name(user)] modified [object.name]'s [varholder] to [valueholder]") - object.vars[varholder] = initial(object.vars[varholder]) + if(object.vv_edit_var(varholder, initial(object.vars[varholder]))) + log_admin("Build Mode: [key_name(user)] modified [object.name]'s [varholder] to [valueholder]") + else + to_chat(user, "Varedit rejected") else to_chat(user, "[initial(object.name)] does not have a var called '[varholder]'") diff --git a/code/modules/admin/verbs/massmodvar.dm b/code/modules/admin/verbs/massmodvar.dm index 6124cef1190..05f662fb163 100644 --- a/code/modules/admin/verbs/massmodvar.dm +++ b/code/modules/admin/verbs/massmodvar.dm @@ -32,7 +32,7 @@ else variable = var_name - if(!variable) + if(!variable || !O.can_vv_get(variable)) return var/default var/var_value = O.vars[variable] diff --git a/code/modules/admin/verbs/modifyvariables.dm b/code/modules/admin/verbs/modifyvariables.dm index 2ac8c73d71c..4aba276cbd9 100644 --- a/code/modules/admin/verbs/modifyvariables.dm +++ b/code/modules/admin/verbs/modifyvariables.dm @@ -528,6 +528,9 @@ GLOBAL_PROTECT(VVpixelmovement) variable = input("Which var?","Var") as null|anything in names if(!variable) return + + if(!O.can_vv_get(variable)) + return var_value = O.vars[variable]