Validate variable names better in assignment.

pull/43/head
Jussi Pakkanen 10 years ago
parent 75a0bc8350
commit c7e3d84f51
  1. 8
      interpreter.py

@ -21,7 +21,7 @@ import build
import optinterpreter
import wrap
import mesonlib
import os, sys, platform, subprocess, shutil, uuid
import os, sys, platform, subprocess, shutil, uuid, re
class InterpreterException(coredata.MesonException):
pass
@ -786,16 +786,18 @@ class Interpreter():
if len(args) != 2:
raise InvalidCode('Set_variable takes two arguments.')
varname = args[0]
if not isinstance(varname, str):
raise InvalidCode('First argument to set_variable must be a string.')
value = self.to_native(args[1])
self.set_variable(varname, value)
def set_variable(self, varname, variable):
if variable is None:
raise InvalidCode('Can not assign None to variable.')
if not isinstance(varname, str):
raise InvalidCode('First argument to set_variable must be a string.')
if not self.is_assignable(variable):
raise InvalidCode('Assigned value not of assignable type.')
if re.fullmatch('[_a-zA-Z][_0-9a-zA-Z]*', varname) is None:
raise InvalidCode('Invalid variable name: ' + varname)
if varname in self.builtin:
raise InvalidCode('Tried to overwrite internal variable "%s"' % varname)
self.variables[varname] = variable

Loading…
Cancel
Save