From: Nikolay Sivov Subject: [2/3] xmllite: Fix overwriting of dest buffer when pushing more data to it Message-Id: <52517CA0.5090709@codeweavers.com> Date: Sun, 06 Oct 2013 19:07:12 +0400 Fix overwriting of dest buffer when pushing more data to it From 7c2c3818230df5a616ec6acbc01d326af5346b00 Mon Sep 17 00:00:00 2001 From: Nikolay Sivov Date: Sun, 6 Oct 2013 18:58:48 +0400 Subject: [PATCH 6/7] Fix overwriting of dest buffer when pushing more data to it --- dlls/xmllite/reader.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dlls/xmllite/reader.c b/dlls/xmllite/reader.c index 8bfa1a3..4209763 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) -- 1.7.10.4