diff options
Diffstat (limited to 'chromium/third_party/libxslt/src/libexslt/crypto.c')
-rw-r--r-- | chromium/third_party/libxslt/src/libexslt/crypto.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/chromium/third_party/libxslt/src/libexslt/crypto.c b/chromium/third_party/libxslt/src/libexslt/crypto.c index ac390387c2b..621fd904eb4 100644 --- a/chromium/third_party/libxslt/src/libexslt/crypto.c +++ b/chromium/third_party/libxslt/src/libexslt/crypto.c @@ -755,7 +755,14 @@ exsltCryptoRc4DecryptFunction (xmlXPathParserContextPtr ctxt, int nargs) { PLATFORM_RC4_DECRYPT (ctxt, padkey, bin, ret_len, ret, ret_len); ret[ret_len] = 0; - xmlXPathReturnString (ctxt, ret); + if (xmlCheckUTF8(ret) == 0) { + xsltTransformError(tctxt, NULL, tctxt->inst, + "exsltCryptoRc4DecryptFunction: Invalid UTF-8\n"); + xmlFree(ret); + xmlXPathReturnEmptyString(ctxt); + } else { + xmlXPathReturnString(ctxt, ret); + } done: if (key != NULL) |