From 7371d0d2fcb2fcaf8b60d63f299ded51fc7c43f3 Mon Sep 17 00:00:00 2001 From: Nikolay Sivov Date: Tue, 20 Apr 2010 02:23:28 +0400 Subject: [PATCH] comctl32/listview: Exit early on LVM_CREATEDRAGIMAGE if null pointer passed for a point. --- dlls/comctl32/listview.c | 2 +- dlls/comctl32/tests/listview.c | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/dlls/comctl32/listview.c b/dlls/comctl32/listview.c index 642a8aacc75..9ca52c5bc8d 100644 --- a/dlls/comctl32/listview.c +++ b/dlls/comctl32/listview.c @@ -5209,7 +5209,7 @@ static HIMAGELIST LISTVIEW_CreateDragImage(LISTVIEW_INFO *infoPtr, INT iItem, LP HIMAGELIST dragList = 0; TRACE("iItem=%d Count=%d\n", iItem, infoPtr->nItemCount); - if (iItem < 0 || iItem >= infoPtr->nItemCount) + if (iItem < 0 || iItem >= infoPtr->nItemCount || !lppt) return 0; rcItem.left = LVIR_BOUNDS; diff --git a/dlls/comctl32/tests/listview.c b/dlls/comctl32/tests/listview.c index 59c3dc1ace7..2c5ef70a2b9 100644 --- a/dlls/comctl32/tests/listview.c +++ b/dlls/comctl32/tests/listview.c @@ -4344,6 +4344,28 @@ static void test_header_notification(void) DestroyWindow(list); } +static void test_createdragimage(void) +{ + HIMAGELIST himl; + POINT pt; + HWND list; + + list = create_listview_control(LVS_ICON); + ok(list != 0, "failed to create listview window\n"); + + insert_item(list, 0); + + /* NULL point */ + himl = (HIMAGELIST)SendMessageA(list, LVM_CREATEDRAGIMAGE, 0, 0); + ok(himl == NULL, "got %p\n", himl); + + himl = (HIMAGELIST)SendMessageA(list, LVM_CREATEDRAGIMAGE, 0, (LPARAM)&pt); + ok(himl != NULL, "got %p\n", himl); + ImageList_Destroy(himl); + + DestroyWindow(list); +} + START_TEST(listview) { HMODULE hComctl32; @@ -4406,6 +4428,7 @@ START_TEST(listview) test_finditem(); test_hover(); test_destroynotify(); + test_createdragimage(); if (!load_v6_module(&ctx_cookie, &hCtx)) { -- 2.11.4.GIT