| Index: third_party/libxslt/libexslt/crypto.c
|
| diff --git a/third_party/libxslt/libexslt/crypto.c b/third_party/libxslt/libexslt/crypto.c
|
| index d142bb65fef7273305a8673d95e9a70d9488498e..6aa9dd2540fa1aec58c3cc8b746bb0f07275df37 100644
|
| --- a/third_party/libxslt/libexslt/crypto.c
|
| +++ b/third_party/libxslt/libexslt/crypto.c
|
| @@ -457,7 +457,8 @@ exsltCryptoGcryptRc4Decrypt (xmlXPathParserContextPtr ctxt,
|
| * @ctxt: an XPath parser context
|
| * @nargs: the number of arguments
|
| *
|
| - * Helper function which checks for and returns first string argument and its length
|
| + * Helper function which checks for and returns first string argument and its
|
| + * length in bytes.
|
| */
|
| static int
|
| exsltCryptoPopString (xmlXPathParserContextPtr ctxt, int nargs,
|
| @@ -471,7 +472,7 @@ exsltCryptoPopString (xmlXPathParserContextPtr ctxt, int nargs,
|
| }
|
|
|
| *str = xmlXPathPopString (ctxt);
|
| - str_len = xmlUTF8Strlen (*str);
|
| + str_len = xmlStrlen (*str);
|
|
|
| if (str_len == 0) {
|
| xmlXPathReturnEmptyString (ctxt);
|
| @@ -591,7 +592,7 @@ exsltCryptoSha1Function (xmlXPathParserContextPtr ctxt, int nargs) {
|
| static void
|
| exsltCryptoRc4EncryptFunction (xmlXPathParserContextPtr ctxt, int nargs) {
|
|
|
| - int key_len = 0, key_size = 0;
|
| + int key_len = 0;
|
| int str_len = 0, bin_len = 0, hex_len = 0;
|
| xmlChar *key = NULL, *str = NULL, *padkey = NULL;
|
| xmlChar *bin = NULL, *hex = NULL;
|
| @@ -604,7 +605,7 @@ exsltCryptoRc4EncryptFunction (xmlXPathParserContextPtr ctxt, int nargs) {
|
| tctxt = xsltXPathGetTransformContext(ctxt);
|
|
|
| str = xmlXPathPopString (ctxt);
|
| - str_len = xmlUTF8Strlen (str);
|
| + str_len = xmlStrlen (str);
|
|
|
| if (str_len == 0) {
|
| xmlXPathReturnEmptyString (ctxt);
|
| @@ -613,7 +614,7 @@ exsltCryptoRc4EncryptFunction (xmlXPathParserContextPtr ctxt, int nargs) {
|
| }
|
|
|
| key = xmlXPathPopString (ctxt);
|
| - key_len = xmlUTF8Strlen (key);
|
| + key_len = xmlStrlen (key);
|
|
|
| if (key_len == 0) {
|
| xmlXPathReturnEmptyString (ctxt);
|
| @@ -632,15 +633,14 @@ exsltCryptoRc4EncryptFunction (xmlXPathParserContextPtr ctxt, int nargs) {
|
| }
|
| memset(padkey, 0, RC4_KEY_LENGTH + 1);
|
|
|
| - key_size = xmlUTF8Strsize (key, key_len);
|
| - if ((key_size > RC4_KEY_LENGTH) || (key_size < 0)) {
|
| + if ((key_len > RC4_KEY_LENGTH) || (key_len < 0)) {
|
| xsltTransformError(tctxt, NULL, tctxt->inst,
|
| "exsltCryptoRc4EncryptFunction: key size too long or key broken\n");
|
| tctxt->state = XSLT_STATE_STOPPED;
|
| xmlXPathReturnEmptyString (ctxt);
|
| goto done;
|
| }
|
| - memcpy (padkey, key, key_size);
|
| + memcpy (padkey, key, key_len);
|
|
|
| /* encrypt it */
|
| bin_len = str_len;
|
| @@ -689,7 +689,7 @@ done:
|
| static void
|
| exsltCryptoRc4DecryptFunction (xmlXPathParserContextPtr ctxt, int nargs) {
|
|
|
| - int key_len = 0, key_size = 0;
|
| + int key_len = 0;
|
| int str_len = 0, bin_len = 0, ret_len = 0;
|
| xmlChar *key = NULL, *str = NULL, *padkey = NULL, *bin =
|
| NULL, *ret = NULL;
|
| @@ -702,7 +702,7 @@ exsltCryptoRc4DecryptFunction (xmlXPathParserContextPtr ctxt, int nargs) {
|
| tctxt = xsltXPathGetTransformContext(ctxt);
|
|
|
| str = xmlXPathPopString (ctxt);
|
| - str_len = xmlUTF8Strlen (str);
|
| + str_len = xmlStrlen (str);
|
|
|
| if (str_len == 0) {
|
| xmlXPathReturnEmptyString (ctxt);
|
| @@ -711,7 +711,7 @@ exsltCryptoRc4DecryptFunction (xmlXPathParserContextPtr ctxt, int nargs) {
|
| }
|
|
|
| key = xmlXPathPopString (ctxt);
|
| - key_len = xmlUTF8Strlen (key);
|
| + key_len = xmlStrlen (key);
|
|
|
| if (key_len == 0) {
|
| xmlXPathReturnEmptyString (ctxt);
|
| @@ -729,15 +729,14 @@ exsltCryptoRc4DecryptFunction (xmlXPathParserContextPtr ctxt, int nargs) {
|
| goto done;
|
| }
|
| memset(padkey, 0, RC4_KEY_LENGTH + 1);
|
| - key_size = xmlUTF8Strsize (key, key_len);
|
| - if ((key_size > RC4_KEY_LENGTH) || (key_size < 0)) {
|
| + if ((key_len > RC4_KEY_LENGTH) || (key_len < 0)) {
|
| xsltTransformError(tctxt, NULL, tctxt->inst,
|
| "exsltCryptoRc4EncryptFunction: key size too long or key broken\n");
|
| tctxt->state = XSLT_STATE_STOPPED;
|
| xmlXPathReturnEmptyString (ctxt);
|
| goto done;
|
| }
|
| - memcpy (padkey, key, key_size);
|
| + memcpy (padkey, key, key_len);
|
|
|
| /* decode hex to binary */
|
| bin_len = str_len;
|
|
|