# HG changeset patch # User MRAB # Date 1355619637 0 # Branch 3.3 # Node ID 858e6a2c17bc69ccaccdf2118179da40e56803d9 # Parent 3a31f6fc0f413807f8d028030cc30e0780eb68c8 Another fix for issue 16688 diff -r 3a31f6fc0f41 -r 858e6a2c17bc Modules/_sre.c --- a/Modules/_sre.c Sat Dec 15 20:17:28 2012 +0000 +++ b/Modules/_sre.c Sun Dec 16 01:00:37 2012 +0000 @@ -492,7 +492,7 @@ Py_ssize_t i; /* adjust end */ - if (maxcount < end - ptr && maxcount != 65535) + if (maxcount < (end - ptr) / state->charsize && maxcount != 65535) end = ptr + maxcount*state->charsize; switch (pattern[0]) { @@ -583,7 +583,7 @@ Py_ssize_t i; /* check minimal length */ - if (pattern[3] && (end - ptr) < pattern[3]) + if (pattern[3] && (end - ptr)/state->charsize < pattern[3]) return 0; /* check known prefix */ @@ -801,7 +801,7 @@ /* <1=skip> <2=flags> <3=min> ... */ if (ctx->pattern[3] && (end - ctx->ptr)/state->charsize < ctx->pattern[3]) { TRACE(("reject (got %d chars, need %d)\n", - (end - ctx->ptr), ctx->pattern[3])); + (end - ctx->ptr)/state->charsize, ctx->pattern[3])); RETURN_FAILURE; } ctx->pattern += ctx->pattern[1] + 1;