danthedeckie / simpleeval

Simple Safe Sandboxed Extensible Expression Evaluator for Python
Other
451 stars 85 forks source link

Crashes when evaluating an empty string #67

Closed Gnarflord closed 1 year ago

Gnarflord commented 5 years ago

When giving simpleeval an empty string it raises this error: Traceback (most recent call last):

Traceback (most recent call last):
  File "simpleeval.py", line 613, in simple_eval
    return s.eval(expr)
  File "simpleeval.py", line 334, in eval
    return self._eval(parsed.body[0].value)
IndexError: list index out of range

I propose to either throw an appropriate error or maybe return something. Wether that'd be an empty string or None is too philosophical for me but maybe there's an PIP on this? Anyways, something like this should suffice:

parsed = ast.parse(expr.strip())
if len(parsed.body) > 0:
    # and evaluate if not empty:
    return self._eval(parsed.body[0].value)
else:
    return None
zhudotexe commented 5 years ago

An interesting note: eval("") in normal Python raises a SyntaxError.

>>> eval("")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 0

    ^
SyntaxError: unexpected EOF while parsing
kurtmckee commented 2 years ago

Looks like this can be closed due to #108.