mirror of
https://github.com/acidanthera/OpenCorePkg.git
synced 2025-12-08 19:25:01 +00:00
OcXmlLib: Fix previous commit
This commit is contained in:
parent
cbdef704f4
commit
1bc2fb3eea
@ -1153,30 +1153,33 @@ XmlDocumentExport (
|
||||
)
|
||||
{
|
||||
CHAR8 *Buffer;
|
||||
CHAR8 *BufferXmlContent;
|
||||
CHAR8 *NewBuffer;
|
||||
UINT32 AllocSize;
|
||||
UINT32 CurrentSize;
|
||||
UINT32 NewSize;
|
||||
|
||||
AllocSize = Document->Buffer.Length + 1;
|
||||
if (PrependPlistInfo && OcOverflowAddU32 (AllocSize, L_STR_SIZE_NT (XML_PLIST_HEADER), &AllocSize)) {
|
||||
return NULL;
|
||||
}
|
||||
Buffer = AllocatePool (AllocSize);
|
||||
if (Buffer == NULL) {
|
||||
XML_USAGE_ERROR ("XmlDocumentExport::failed to allocate");
|
||||
return NULL;
|
||||
}
|
||||
BufferXmlContent = PrependPlistInfo ? &Buffer[L_STR_LEN (XML_PLIST_HEADER)] : Buffer;
|
||||
|
||||
CurrentSize = 0;
|
||||
XmlNodeExportRecursive (Document->Root, &BufferXmlContent, &AllocSize, &CurrentSize, Skip);
|
||||
XmlNodeExportRecursive (Document->Root, &Buffer, &AllocSize, &CurrentSize, Skip);
|
||||
|
||||
if (PrependPlistInfo) {
|
||||
if (OcOverflowAddU32 (CurrentSize, L_STR_SIZE_NT (XML_PLIST_HEADER), &CurrentSize)) {
|
||||
if (OcOverflowTriAddU32 (CurrentSize, L_STR_SIZE_NT (XML_PLIST_HEADER), 1, &NewSize)) {
|
||||
FreePool (Buffer);
|
||||
return NULL;
|
||||
}
|
||||
CopyMem (Buffer, XML_PLIST_HEADER, L_STR_SIZE_NT (XML_PLIST_HEADER));
|
||||
NewBuffer = AllocatePool (NewSize);
|
||||
CopyMem (&NewBuffer[L_STR_LEN (XML_PLIST_HEADER)], Buffer, CurrentSize);
|
||||
CopyMem (NewBuffer, XML_PLIST_HEADER, L_STR_SIZE_NT (XML_PLIST_HEADER));
|
||||
FreePool (Buffer);
|
||||
|
||||
CurrentSize = NewSize - 1;
|
||||
Buffer = NewBuffer;
|
||||
}
|
||||
|
||||
if (Length != NULL) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user