summaryrefslogtreecommitdiff
path: root/chromium/third_party/libxslt/src/libexslt/crypto.c
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/libxslt/src/libexslt/crypto.c')
-rw-r--r--chromium/third_party/libxslt/src/libexslt/crypto.c9
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)