summaryrefslogtreecommitdiffstats
path: root/Objects/stringlib
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2019-06-25 08:54:18 (GMT)
committerGitHub <noreply@github.com>2019-06-25 08:54:18 (GMT)
commit894263ba80af4b7733c2df95b527e96953922656 (patch)
tree4d779773185514744e39f6e9560563540b9047b6 /Objects/stringlib
parent9fe42b49c79c453d905d0395150ba0607fbab18b (diff)
downloadcpython-894263ba80af4b7733c2df95b527e96953922656.zip
cpython-894263ba80af4b7733c2df95b527e96953922656.tar.gz
cpython-894263ba80af4b7733c2df95b527e96953922656.tar.bz2
bpo-24214: Fixed the UTF-8 and UTF-16 incremental decoders. (GH-14304)
* The UTF-8 incremental decoders fails now fast if encounter a sequence that can't be handled by the error handler. * The UTF-16 incremental decoders with the surrogatepass error handler decodes now a lone low surrogate with final=False.
Diffstat (limited to 'Objects/stringlib')
-rw-r--r--Objects/stringlib/codecs.h6
1 files changed, 3 insertions, 3 deletions
diff --git a/Objects/stringlib/codecs.h b/Objects/stringlib/codecs.h
index 8645bc2..d6f2b98 100644
--- a/Objects/stringlib/codecs.h
+++ b/Objects/stringlib/codecs.h
@@ -207,7 +207,7 @@ STRINGLIB(utf8_decode)(const char **inptr, const char *end,
goto InvalidContinuation1;
} else if (ch == 0xF4 && ch2 >= 0x90) {
/* invalid sequence
- \xF4\x90\x80\80- -- 110000- overflow */
+ \xF4\x90\x80\x80- -- 110000- overflow */
goto InvalidContinuation1;
}
if (!IS_CONTINUATION_BYTE(ch3)) {
@@ -573,10 +573,10 @@ STRINGLIB(utf16_decode)(const unsigned char **inptr, const unsigned char *e,
}
/* UTF-16 code pair: */
- if (q >= e)
- goto UnexpectedEnd;
if (!Py_UNICODE_IS_HIGH_SURROGATE(ch))
goto IllegalEncoding;
+ if (q >= e)
+ goto UnexpectedEnd;
ch2 = (q[ihi] << 8) | q[ilo];
q += 2;
if (!Py_UNICODE_IS_LOW_SURROGATE(ch2))