diff options
Diffstat (limited to 'Python/codecs.c')
| -rw-r--r-- | Python/codecs.c | 7 | 
1 files changed, 4 insertions, 3 deletions
| diff --git a/Python/codecs.c b/Python/codecs.c index 797a45f5a1..5470500577 100644 --- a/Python/codecs.c +++ b/Python/codecs.c @@ -791,9 +791,10 @@ PyCodec_SurrogatePassErrors(PyObject *exc)          /* Try decoding a single surrogate character. If             there are more, let the codec call us again. */          p += start; -        if ((p[0] & 0xf0) == 0xe0 || -            (p[1] & 0xc0) == 0x80 || -            (p[2] & 0xc0) == 0x80) { +        if (strlen(p) > 2 && +            ((p[0] & 0xf0) == 0xe0 || +             (p[1] & 0xc0) == 0x80 || +             (p[2] & 0xc0) == 0x80)) {              /* it's a three-byte code */              ch = ((p[0] & 0x0f) << 12) + ((p[1] & 0x3f) << 6) + (p[2] & 0x3f);              if (ch < 0xd800 || ch > 0xdfff) | 
