Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
GNOME
libxml2
Commits
4f9fdc70
Commit
4f9fdc70
authored
Jul 18, 2012
by
Daniel Veillard
Browse files
Fix entities local buffers size problems
parent
459eeb9d
Changes
1
Hide whitespace changes
Inline
Side-by-side
entities.c
View file @
4f9fdc70
...
...
@@ -528,13 +528,13 @@ xmlGetDocEntity(xmlDocPtr doc, const xmlChar *name) {
* Macro used to grow the current buffer.
*/
#define growBufferReentrant() { \
buffer_size *= 2;
\
buffer = (xmlChar *)
\
xmlRealloc(buffer, buffer_size * sizeof(xmlChar));
\
if (buffer == NULL) {
\
xmlEntitiesErrMemory("xmlEncodeEntitiesReentrant: realloc failed");
\
return(NULL)
; \
}
\
xmlChar *tmp;
\
size_t new_size = buffer_size *= 2;
\
if (new_size < buffer_size) goto mem_error;
\
tmp = (xmlChar *) xmlRealloc(buffer, new_size);
\
if (tmp == NULL) goto mem_error;
\
buffer = tmp
; \
buffer_size = new_size;
\
}
...
...
@@ -555,7 +555,7 @@ xmlEncodeEntitiesReentrant(xmlDocPtr doc, const xmlChar *input) {
const
xmlChar
*
cur
=
input
;
xmlChar
*
buffer
=
NULL
;
xmlChar
*
out
=
NULL
;
in
t
buffer_size
=
0
;
size_
t
buffer_size
=
0
;
int
html
=
0
;
if
(
input
==
NULL
)
return
(
NULL
);
...
...
@@ -574,8 +574,8 @@ xmlEncodeEntitiesReentrant(xmlDocPtr doc, const xmlChar *input) {
out
=
buffer
;
while
(
*
cur
!=
'\0'
)
{
if
(
out
-
buffer
>
buffer_size
-
100
)
{
i
nt
indx
=
out
-
buffer
;
size_t
indx
=
out
-
buffer
;
i
f
(
indx
+
100
>
buffer_size
)
{
growBufferReentrant
();
out
=
&
buffer
[
indx
];
...
...
@@ -692,6 +692,11 @@ xmlEncodeEntitiesReentrant(xmlDocPtr doc, const xmlChar *input) {
}
*
out
=
0
;
return
(
buffer
);
mem_error:
xmlEntitiesErrMemory
(
"xmlEncodeEntitiesReentrant: realloc failed"
);
xmlFree
(
buffer
);
return
(
NULL
);
}
/**
...
...
@@ -709,7 +714,7 @@ xmlEncodeSpecialChars(xmlDocPtr doc ATTRIBUTE_UNUSED, const xmlChar *input) {
const
xmlChar
*
cur
=
input
;
xmlChar
*
buffer
=
NULL
;
xmlChar
*
out
=
NULL
;
in
t
buffer_size
=
0
;
size_
t
buffer_size
=
0
;
if
(
input
==
NULL
)
return
(
NULL
);
/*
...
...
@@ -724,8 +729,8 @@ xmlEncodeSpecialChars(xmlDocPtr doc ATTRIBUTE_UNUSED, const xmlChar *input) {
out
=
buffer
;
while
(
*
cur
!=
'\0'
)
{
if
(
out
-
buffer
>
buffer_size
-
10
)
{
i
nt
indx
=
out
-
buffer
;
size_t
indx
=
out
-
buffer
;
i
f
(
indx
+
10
>
buffer_size
)
{
growBufferReentrant
();
out
=
&
buffer
[
indx
];
...
...
@@ -774,6 +779,11 @@ xmlEncodeSpecialChars(xmlDocPtr doc ATTRIBUTE_UNUSED, const xmlChar *input) {
}
*
out
=
0
;
return
(
buffer
);
mem_error:
xmlEntitiesErrMemory
(
"xmlEncodeSpecialChars: realloc failed"
);
xmlFree
(
buffer
);
return
(
NULL
);
}
/**
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment