summaryrefslogtreecommitdiff
path: root/chromium/third_party/libxml/src/xmlstring.c
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/libxml/src/xmlstring.c')
-rw-r--r--chromium/third_party/libxml/src/xmlstring.c40
1 files changed, 20 insertions, 20 deletions
diff --git a/chromium/third_party/libxml/src/xmlstring.c b/chromium/third_party/libxml/src/xmlstring.c
index d4d352b15bc..7fbf9d079e2 100644
--- a/chromium/third_party/libxml/src/xmlstring.c
+++ b/chromium/third_party/libxml/src/xmlstring.c
@@ -23,6 +23,9 @@
#include <libxml/parserInternals.h>
#include <libxml/xmlstring.h>
+#include "private/parser.h"
+#include "private/string.h"
+
/************************************************************************
* *
* Commodity functions to handle xmlChars *
@@ -43,12 +46,12 @@ xmlStrndup(const xmlChar *cur, int len) {
xmlChar *ret;
if ((cur == NULL) || (len < 0)) return(NULL);
- ret = (xmlChar *) xmlMallocAtomic(((size_t) len + 1) * sizeof(xmlChar));
+ ret = (xmlChar *) xmlMallocAtomic((size_t) len + 1);
if (ret == NULL) {
xmlErrMemory(NULL, NULL);
return(NULL);
}
- memcpy(ret, cur, len * sizeof(xmlChar));
+ memcpy(ret, cur, len);
ret[len] = 0;
return(ret);
}
@@ -88,12 +91,13 @@ xmlCharStrndup(const char *cur, int len) {
xmlChar *ret;
if ((cur == NULL) || (len < 0)) return(NULL);
- ret = (xmlChar *) xmlMallocAtomic(((size_t) len + 1) * sizeof(xmlChar));
+ ret = (xmlChar *) xmlMallocAtomic((size_t) len + 1);
if (ret == NULL) {
xmlErrMemory(NULL, NULL);
return(NULL);
}
for (i = 0;i < len;i++) {
+ /* Explicit sign change */
ret[i] = (xmlChar) cur[i];
if (ret[i] == 0) return(ret);
}
@@ -457,12 +461,12 @@ xmlStrncat(xmlChar *cur, const xmlChar *add, int len) {
size = xmlStrlen(cur);
if ((size < 0) || (size > INT_MAX - len))
return(NULL);
- ret = (xmlChar *) xmlRealloc(cur, ((size_t) size + len + 1) * sizeof(xmlChar));
+ ret = (xmlChar *) xmlRealloc(cur, (size_t) size + len + 1);
if (ret == NULL) {
xmlErrMemory(NULL, NULL);
return(cur);
}
- memcpy(&ret[size], add, len * sizeof(xmlChar));
+ memcpy(&ret[size], add, len);
ret[size + len] = 0;
return(ret);
}
@@ -497,13 +501,13 @@ xmlStrncatNew(const xmlChar *str1, const xmlChar *str2, int len) {
size = xmlStrlen(str1);
if ((size < 0) || (size > INT_MAX - len))
return(NULL);
- ret = (xmlChar *) xmlMalloc(((size_t) size + len + 1) * sizeof(xmlChar));
+ ret = (xmlChar *) xmlMalloc((size_t) size + len + 1);
if (ret == NULL) {
xmlErrMemory(NULL, NULL);
return(xmlStrndup(str1, size));
}
- memcpy(ret, str1, size * sizeof(xmlChar));
- memcpy(&ret[size], str2, len * sizeof(xmlChar));
+ memcpy(ret, str1, size);
+ memcpy(&ret[size], str2, len);
ret[size + len] = 0;
return(ret);
}
@@ -844,21 +848,17 @@ xmlUTF8Strsize(const xmlChar *utf, int len) {
while ( len-- > 0) {
if ( !*ptr )
break;
- if ( (ch = *ptr++) & 0x80) {
- // Workaround for an optimization bug in VS 2015 Update 2, remove
- // once the fix is released. crbug.com/599427
- // https://connect.microsoft.com/VisualStudio/feedback/details/2582138
- xmlChar ch2 = ch;
- while ((ch2<<=1) & 0x80 ) {
+ if ( (ch = *ptr++) & 0x80)
+ while ((ch<<=1) & 0x80 ) {
+ if (*ptr == 0) break;
ptr++;
- if (*ptr == 0) break;
- }
- }
+ }
}
ret = ptr - utf;
return (ret > INT_MAX ? 0 : ret);
}
+
/**
* xmlUTF8Strndup:
* @utf: the input UTF8 *
@@ -875,11 +875,11 @@ xmlUTF8Strndup(const xmlChar *utf, int len) {
if ((utf == NULL) || (len < 0)) return(NULL);
i = xmlUTF8Strsize(utf, len);
- ret = (xmlChar *) xmlMallocAtomic(((size_t) i + 1) * sizeof(xmlChar));
+ ret = (xmlChar *) xmlMallocAtomic((size_t) i + 1);
if (ret == NULL) {
return(NULL);
}
- memcpy(ret, utf, i * sizeof(xmlChar));
+ memcpy(ret, utf, i);
ret[i] = 0;
return(ret);
}
@@ -1026,7 +1026,7 @@ xmlEscapeFormatString(xmlChar **msg)
if ((count > INT_MAX) || (msgLen > INT_MAX - count))
return(NULL);
resultLen = msgLen + count + 1;
- result = (xmlChar *) xmlMallocAtomic(resultLen * sizeof(xmlChar));
+ result = (xmlChar *) xmlMallocAtomic(resultLen);
if (result == NULL) {
/* Clear *msg to prevent format string vulnerabilities in
out-of-memory situations. */