Fix SF buf #480096: Assign to __debug__ still allowed
Easy enough to catch assignment in the compiler. The perverse user
can still change the value of __debug__, but that may be the least he
can do.
diff --git a/Python/compile.c b/Python/compile.c
index c8a5669..1a46064 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -5459,8 +5459,13 @@
n = CHILD(n, 1);
goto loop;
} else if (TYPE(tmp) == NAME) {
- if (strcmp(STR(tmp), "__debug__") == 0)
- symtable_warn(st, ASSIGN_DEBUG);
+ if (strcmp(STR(tmp), "__debug__") == 0) {
+ PyErr_SetString(PyExc_SyntaxError,
+ ASSIGN_DEBUG);
+ PyErr_SyntaxLocation(st->st_filename,
+ st->st_cur->ste_opt_lineno);
+ st->st_errors++;
+ }
symtable_add_def(st, STR(tmp), DEF_LOCAL | def_flag);
}
return;