[2/3] windowscodecs: Test for png codec seeking too far
Viktor Semykin
thesame.ml at gmail.com
Mon Mar 27 15:09:14 CDT 2017
Signed-off-by: Viktor Semykin <thesame.ml at gmail.com>
---
dlls/windowscodecs/tests/Makefile.in | 2 +-
dlls/windowscodecs/tests/pngformat.c | 19 ++++++++++---------
2 files changed, 11 insertions(+), 10 deletions(-)
diff --git a/dlls/windowscodecs/tests/Makefile.in b/dlls/windowscodecs/tests/Makefile.in
index e11d184..e006e3d 100644
--- a/dlls/windowscodecs/tests/Makefile.in
+++ b/dlls/windowscodecs/tests/Makefile.in
@@ -1,5 +1,5 @@
TESTDLL = windowscodecs.dll
-IMPORTS = windowscodecs oleaut32 ole32 user32 gdi32
+IMPORTS = windowscodecs oleaut32 ole32 user32 gdi32 shlwapi
C_SRCS = \
bitmap.c \
diff --git a/dlls/windowscodecs/tests/pngformat.c b/dlls/windowscodecs/tests/pngformat.c
index 34cb533..20b6e93 100644
--- a/dlls/windowscodecs/tests/pngformat.c
+++ b/dlls/windowscodecs/tests/pngformat.c
@@ -25,6 +25,7 @@
#include "windef.h"
#include "wincodec.h"
#include "wine/test.h"
+#include "shlwapi.h"
/* 1x1 pixel PNG image */
static const char png_no_color_profile[] = {
@@ -277,21 +278,16 @@ static IWICImagingFactory *factory;
static IWICBitmapDecoder *create_decoder(const void *image_data, UINT image_size)
{
- HGLOBAL hmem;
- BYTE *data;
HRESULT hr;
IWICBitmapDecoder *decoder = NULL;
IStream *stream;
GUID format;
LONG refcount;
+ ULARGE_INTEGER pos;
+ LARGE_INTEGER zero;
- hmem = GlobalAlloc(0, image_size);
- data = GlobalLock(hmem);
- memcpy(data, image_data, image_size);
- GlobalUnlock(hmem);
-
- hr = CreateStreamOnHGlobal(hmem, TRUE, &stream);
- ok(hr == S_OK, "CreateStreamOnHGlobal error %#x\n", hr);
+ stream = SHCreateMemStream (image_data, image_size);
+ ok(stream != NULL, "SHCreateMemStream error\n");
hr = IWICImagingFactory_CreateDecoderFromStream(factory, stream, NULL, 0, &decoder);
ok(hr == S_OK, "CreateDecoderFromStream error %#x\n", hr);
@@ -302,6 +298,11 @@ static IWICBitmapDecoder *create_decoder(const void *image_data, UINT image_size
ok(IsEqualGUID(&format, &GUID_ContainerFormatPng),
"wrong container format %s\n", wine_dbgstr_guid(&format));
+ zero.QuadPart = 0;
+ IStream_Seek (stream, zero, STREAM_SEEK_CUR, &pos);
+ todo_wine ok(pos.QuadPart < image_size, "seek beyond the end of stream: %lu >= %u\n",
+ pos.QuadPart, image_size);
+
refcount = IStream_Release(stream);
ok(refcount > 0, "expected stream refcount > 0\n");
--
2.12.1
More information about the wine-patches
mailing list