SF Bug Tracker id 3496993 - Write after free in ixmlNode_insertBefore
Submitted: Fabrice Fontaine ( ffontaine ) - 2012-03-05 04:54:40 PST
If ixmlNode_isParent(nodeptr, newChild) returns TRUE,
ixmlNode_removeChild(nodeptr, newChild, NULL) will free newChild before
the modifications of newChild->nextSibling and newChild->prevSibling.
(cherry picked from commit 4f34a12a83)
This commit is contained in:
committed by
Marcelo Roberto Jimenez
parent
0edaf3361d
commit
bd41182cf3
10
ChangeLog
10
ChangeLog
@@ -318,6 +318,16 @@ Version 1.8.0
|
|||||||
Version 1.6.16
|
Version 1.6.16
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
|
|
||||||
|
2012-03-08 Fabrice Fontaine <fabrice.fontaine(at)orange.com>
|
||||||
|
|
||||||
|
SF Bug Tracker id 3496993 - Write after free in ixmlNode_insertBefore
|
||||||
|
|
||||||
|
Submitted: Fabrice Fontaine ( ffontaine ) - 2012-03-05 04:54:40 PST
|
||||||
|
|
||||||
|
If ixmlNode_isParent(nodeptr, newChild) returns TRUE,
|
||||||
|
ixmlNode_removeChild(nodeptr, newChild, NULL) will free newChild before
|
||||||
|
the modifications of newChild->nextSibling and newChild->prevSibling.
|
||||||
|
|
||||||
2012-03-08 Fabrice Fontaine <fabrice.fontaine(at)orange.com>
|
2012-03-08 Fabrice Fontaine <fabrice.fontaine(at)orange.com>
|
||||||
|
|
||||||
Remove most of strcpy, sprintf and strcat
|
Remove most of strcpy, sprintf and strcat
|
||||||
|
|||||||
@@ -500,7 +500,7 @@ int ixmlNode_insertBefore(
|
|||||||
|
|
||||||
if (refChild != NULL) {
|
if (refChild != NULL) {
|
||||||
if (ixmlNode_isParent(nodeptr, newChild) == TRUE) {
|
if (ixmlNode_isParent(nodeptr, newChild) == TRUE) {
|
||||||
ixmlNode_removeChild(nodeptr, newChild, NULL);
|
ixmlNode_removeChild(nodeptr, newChild, &newChild);
|
||||||
newChild->nextSibling = NULL;
|
newChild->nextSibling = NULL;
|
||||||
newChild->prevSibling = NULL;
|
newChild->prevSibling = NULL;
|
||||||
}
|
}
|
||||||
@@ -611,7 +611,7 @@ int ixmlNode_appendChild(IXML_Node *nodeptr, IXML_Node *newChild)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (ixmlNode_isParent(nodeptr, newChild) == TRUE ) {
|
if (ixmlNode_isParent(nodeptr, newChild) == TRUE ) {
|
||||||
ixmlNode_removeChild(nodeptr, newChild, NULL);
|
ixmlNode_removeChild(nodeptr, newChild, &newChild);
|
||||||
}
|
}
|
||||||
/* set the parent node pointer */
|
/* set the parent node pointer */
|
||||||
newChild->parentNode = nodeptr;
|
newChild->parentNode = nodeptr;
|
||||||
|
|||||||
Reference in New Issue
Block a user