summaryrefslogtreecommitdiffstats
path: root/Parser
diff options
context:
space:
mode:
authorMichael J. Sullivan <sully@msully.net>2019-05-22 20:43:37 (GMT)
committerMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2019-05-22 20:43:36 (GMT)
commitd8a82e2897b735e2b7e9e086f1d709365a2ad72c (patch)
tree205e3c569ca3d23346a4a8e3aa7bba46d352a7df /Parser
parent0c2b6a3943aa7b022e8eb4bfd9bffcddebf9a587 (diff)
downloadcpython-d8a82e2897b735e2b7e9e086f1d709365a2ad72c.zip
cpython-d8a82e2897b735e2b7e9e086f1d709365a2ad72c.tar.gz
cpython-d8a82e2897b735e2b7e9e086f1d709365a2ad72c.tar.bz2
bpo-36878: Only allow text after `# type: ignore` if first character ASCII (GH-13504)
This disallows things like `# type: ignoreƩ`, which seems wrong. Also switch to using Py_ISALNUM for the alnum check, for consistency with other code (and maybe correctness re: locale issues?). https://bugs.python.org/issue36878
Diffstat (limited to 'Parser')
-rw-r--r--Parser/tokenizer.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/Parser/tokenizer.c b/Parser/tokenizer.c
index 9b269af..c2ec659 100644
--- a/Parser/tokenizer.c
+++ b/Parser/tokenizer.c
@@ -1275,10 +1275,11 @@ tok_get(struct tok_state *tok, char **p_start, char **p_end)
type_start = p;
/* A TYPE_IGNORE is "type: ignore" followed by the end of the token
- * or anything non-alphanumeric. */
+ * or anything ASCII and non-alphanumeric. */
is_type_ignore = (
tok->cur >= ignore_end && memcmp(p, "ignore", 6) == 0
- && !(tok->cur > ignore_end && isalnum(p[6])));
+ && !(tok->cur > ignore_end
+ && ((unsigned char)ignore_end[0] >= 128 || Py_ISALNUM(ignore_end[0]))));
if (is_type_ignore) {
*p_start = (char *) ignore_end;