]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - csprogs.c
prevent information leakage from trace_ globals to prvm_global client to prevent...
[xonotic/darkplaces.git] / csprogs.c
index 56b23ce7c86c3a9d635808e073425f4ec3e2cd0e..b4e62c980d40626d2349e5fb59a2daf4fe7320cf 100644 (file)
--- a/csprogs.c
+++ b/csprogs.c
 
 #define CSQC_RETURNVAL prog->globals.generic[OFS_RETURN]
 #define CSQC_BEGIN             csqc_tmpprog=prog;prog=0;PRVM_SetProg(PRVM_CLIENTPROG);
-#define CSQC_END               VM_ClearTraceGlobals(); prog=csqc_tmpprog;
-// TODO check if the clearing of trace globals takes too much CPU. If it does,
-// perform it before console command processing instead.
+#define CSQC_END               prog=csqc_tmpprog;
 
 static prvm_prog_t *csqc_tmpprog;
 
+void CL_VM_PreventInformationLeaks(void)
+{
+       prvm_eval_t *val;
+       if(!cl.csqc_loaded)
+               return;
+       CSQC_BEGIN
+               VM_ClearTraceGlobals();
+               if ((val = PRVM_GLOBALFIELDVALUE(prog->globaloffsets.trace_networkentity)))
+                       val->_float = 0;
+       CSQC_END
+}
+
 //[515]: these are required funcs
 static char *cl_required_func[] =
 {