[2/3] windowscodecs: Test for png codec seeking too far

Vincent Povirk madewokherd at gmail.com
Wed Mar 29 18:54:26 CDT 2017


Is there a reason to switch to SHCreateMemStream to do this test in
particular? If not, it would probably make more sense as a separate
cleanup project.

On Mon, Mar 27, 2017 at 3:09 PM, Viktor Semykin <thesame.ml at gmail.com> wrote:
> 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-devel mailing list