Nikolay Sivov : xmllite: Fix overwriting of dest buffer when pushing more data to it.
Alexandre Julliard
julliard at winehq.org
Wed Oct 9 14:22:14 CDT 2013
Module: wine
Branch: master
Commit: feda40bbaab360edd09b1a36d75a52894b91bde6
URL: http://source.winehq.org/git/wine.git/?a=commit;h=feda40bbaab360edd09b1a36d75a52894b91bde6
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Wed Oct 9 15:38:02 2013 +0400
xmllite: Fix overwriting of dest buffer when pushing more data to it.
---
dlls/xmllite/reader.c | 8 ++++----
1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/dlls/xmllite/reader.c b/dlls/xmllite/reader.c
index ad6544b..ebea0b4 100644
--- a/dlls/xmllite/reader.c
+++ b/dlls/xmllite/reader.c
@@ -703,7 +703,7 @@ static HRESULT readerinput_growraw(xmlreaderinput *readerinput)
read = 0;
hr = ISequentialStream_Read(readerinput->stream, buffer->data + buffer->written, len, &read);
- TRACE("requested %d, read %d, ret 0x%08x\n", len, read, hr);
+ TRACE("written=%d, alloc=%d, requested=%d, read=%d, ret=0x%08x\n", buffer->written, buffer->allocated, len, read, hr);
readerinput->pending = hr == E_PENDING;
if (FAILED(hr)) return hr;
buffer->written += read;
@@ -903,14 +903,14 @@ static HRESULT reader_more(xmlreader *reader)
if (cp == ~0)
{
readerinput_grow(readerinput, len);
- memcpy(dest->data, src->data + src->cur, len);
+ memcpy(dest->data + dest->written, src->data + src->cur, len);
dest->written += len*sizeof(WCHAR);
return hr;
}
dest_len = MultiByteToWideChar(cp, 0, src->data + src->cur, len, NULL, 0);
readerinput_grow(readerinput, dest_len);
- ptr = (WCHAR*)dest->data;
+ ptr = (WCHAR*)(dest->data + dest->written);
MultiByteToWideChar(cp, 0, src->data + src->cur, len, ptr, dest_len);
ptr[dest_len] = 0;
dest->written += dest_len*sizeof(WCHAR);
@@ -930,7 +930,7 @@ static inline WCHAR *reader_get_ptr(xmlreader *reader)
encoded_buffer *buffer = &reader->input->buffer->utf16;
WCHAR *ptr = (WCHAR*)buffer->data + buffer->cur;
if (!*ptr) reader_more(reader);
- return ptr;
+ return (WCHAR*)buffer->data + buffer->cur;
}
static int reader_cmp(xmlreader *reader, const WCHAR *str)
More information about the wine-cvs
mailing list