Damjan Jovanovic : shell32/tests: Test what Shell_MergeMenus() does with a negative adjustment.

Alexandre Julliard julliard at winehq.org
Fri Apr 30 16:03:28 CDT 2021


Module: wine
Branch: master
Commit: 42ecb0ec15f28ee0a5acc24d60c3bdb5416d71d0
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=42ecb0ec15f28ee0a5acc24d60c3bdb5416d71d0

Author: Damjan Jovanovic <damjan.jov at gmail.com>
Date:   Fri Apr 30 07:39:13 2021 +0200

shell32/tests: Test what Shell_MergeMenus() does with a negative adjustment.

Signed-off-by: Damjan Jovanovic <damjan.jov at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/shell32/tests/shlfileop.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/dlls/shell32/tests/shlfileop.c b/dlls/shell32/tests/shlfileop.c
index dc3572abf3d..9eab928c12f 100644
--- a/dlls/shell32/tests/shlfileop.c
+++ b/dlls/shell32/tests/shlfileop.c
@@ -2673,6 +2673,7 @@ test_shlmenu(void) {
 
 	src_menu = CreatePopupMenu ();
 	ok (src_menu != NULL, "CreatePopupMenu() failed, error %d\n", GetLastError ());
+
 	dst_menu = CreatePopupMenu ();
 	ok (dst_menu != NULL, "CreatePopupMenu() failed, error %d\n", GetLastError ());
 	bres = InsertMenuA (src_menu, -1, MF_BYPOSITION | MF_STRING, 10, "item1");
@@ -2690,6 +2691,16 @@ test_shlmenu(void) {
 	ok (bres, "GetMenuItemInfoA failed, error %d\n", GetLastError ());
 	ok (item_info.wID == 133, "got %d\n", item_info.wID);
 	DestroyMenu (dst_menu);
+
+	/* integer overflow: Shell_MergeMenus() return value is wrong, but items are still added */
+	dst_menu = CreatePopupMenu ();
+	ok (dst_menu != NULL, "CreatePopupMenu() failed, error %d\n", GetLastError ());
+	hres = Shell_MergeMenus (dst_menu, src_menu, 0, -1, 133, MM_SUBMENUSHAVEIDS);
+	ok (hres == -1, "got %d\n", hres);
+	count = GetMenuItemCount (dst_menu);
+	ok (count == 2, "got %d\n", count);
+	DestroyMenu (dst_menu);
+
 	DestroyMenu (src_menu);
 }
 




More information about the wine-cvs mailing list