From 217644c0d65abfc9729c083074d505b22cd7ccf6 Mon Sep 17 00:00:00 2001 From: Nicolas Pena Date: Thu, 6 Jul 2017 10:53:01 -0400 Subject: Force unicodes into valid ranges MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit U+D800 to U+DFFF should not be encoded in UTF-16. However, FreeType may have charcodes in that range, so in that case we just say that the corresponding unicode is U+0000, NULL. Bug: chromium:732272 Change-Id: I64e82856bab7f69545a307da1fef4df7f9df1f00 Reviewed-on: https://pdfium-review.googlesource.com/7312 Commit-Queue: Nicolás Peña Reviewed-by: dsinclair --- fpdfsdk/fpdfedittext.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/fpdfsdk/fpdfedittext.cpp b/fpdfsdk/fpdfedittext.cpp index f15f9e4e6a..02bf722462 100644 --- a/fpdfsdk/fpdfedittext.cpp +++ b/fpdfsdk/fpdfedittext.cpp @@ -111,6 +111,9 @@ void AddCharcode(std::ostringstream* pBuffer, uint32_t number) { // PDF spec 1.7 Section 5.9.2: "Unicode character sequences as expressed in // UTF-16BE encoding." See https://en.wikipedia.org/wiki/UTF-16#Description void AddUnicode(std::ostringstream* pBuffer, uint32_t unicode) { + if (unicode >= 0xD800 && unicode <= 0xDFFF) + unicode = 0; + char ans[8]; *pBuffer << "<"; size_t numChars = FXSYS_ToUTF16BE(unicode, ans); -- cgit v1.2.3