From aee704ebe19cb9baeecdda90b7f8f7551d59aa3b Mon Sep 17 00:00:00 2001 From: Paul Sokolovsky Date: Sun, 1 Nov 2015 00:38:12 +0300 Subject: extmod/modure: Make sure that errors in regexps are caught early. --- extmod/modure.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'extmod/modure.c') diff --git a/extmod/modure.c b/extmod/modure.c index f54b060c8..f25c1a8d9 100644 --- a/extmod/modure.c +++ b/extmod/modure.c @@ -185,6 +185,9 @@ STATIC const mp_obj_type_t re_type = { STATIC mp_obj_t mod_re_compile(uint n_args, const mp_obj_t *args) { const char *re_str = mp_obj_str_get_str(args[0]); int size = re1_5_sizecode(re_str); + if (size == -1) { + goto error; + } mp_obj_re_t *o = m_new_obj_var(mp_obj_re_t, char, size); o->base.type = &re_type; int flags = 0; @@ -193,6 +196,7 @@ STATIC mp_obj_t mod_re_compile(uint n_args, const mp_obj_t *args) { } int error = re1_5_compilecode(&o->re, re_str); if (error != 0) { +error: nlr_raise(mp_obj_new_exception_msg(&mp_type_ValueError, "Error in regex")); } if (flags & FLAG_DEBUG) { -- cgit v1.2.3