Commit 75e6ccdc authored by Robert Sprowson's avatar Robert Sprowson
Browse files

Fix 2 NULL pointer dereferences

Only use menu_int after checking it's not NULL. Fixes problems in !ResTest when opening menus with menu class items in them.

Version 0.40. Tagged as 'Menu-0_40'
parent 087cc02b
/* (0.39) /* (0.40)
* *
* This file is automatically maintained by srccommit, do not edit manually. * This file is automatically maintained by srccommit, do not edit manually.
* Last processed by srccommit version: 1.1. * Last processed by srccommit version: 1.1.
* *
*/ */
#define Module_MajorVersion_CMHG 0.39 #define Module_MajorVersion_CMHG 0.40
#define Module_MinorVersion_CMHG #define Module_MinorVersion_CMHG
#define Module_Date_CMHG 14 Oct 2015 #define Module_Date_CMHG 01 Nov 2015
#define Module_MajorVersion "0.39" #define Module_MajorVersion "0.40"
#define Module_Version 39 #define Module_Version 40
#define Module_MinorVersion "" #define Module_MinorVersion ""
#define Module_Date "14 Oct 2015" #define Module_Date "01 Nov 2015"
#define Module_ApplicationDate "14-Oct-15" #define Module_ApplicationDate "01-Nov-15"
#define Module_ComponentName "Menu" #define Module_ComponentName "Menu"
#define Module_ComponentPath "castle/RiscOS/Sources/Toolbox/Menu" #define Module_ComponentPath "castle/RiscOS/Sources/Toolbox/Menu"
#define Module_FullVersion "0.39" #define Module_FullVersion "0.40"
#define Module_HelpVersion "0.39 (14 Oct 2015)" #define Module_HelpVersion "0.40 (01 Nov 2015)"
#define Module_LibraryVersionInfo "0:39" #define Module_LibraryVersionInfo "0:40"
...@@ -241,7 +241,6 @@ _kernel_oserror *event_help_request (wimp_Message message_block, TaskDescriptor ...@@ -241,7 +241,6 @@ _kernel_oserror *event_help_request (wimp_Message message_block, TaskDescriptor
} }
object_id = menu_int->hdr.object_id; object_id = menu_int->hdr.object_id;
while (*(pposition+1) != -1) { while (*(pposition+1) != -1) {
int_entry = menu_internal_entry (menu_int,*pposition++); int_entry = menu_internal_entry (menu_int,*pposition++);
...@@ -339,7 +338,7 @@ _kernel_oserror *event_menu_warning (wimp_Message message_block, TaskDescriptor ...@@ -339,7 +338,7 @@ _kernel_oserror *event_menu_warning (wimp_Message message_block, TaskDescriptor
Menu_SubMenu_Event Menu_SubMenu_Event
*menu_sm; *menu_sm;
ToolboxEvent toolbox_event; ToolboxEvent toolbox_event;
ObjectID object_id = global_menu.top->hdr.object_id; ObjectID object_id;
ObjectID submenu; ObjectID submenu;
ComponentID component_id; ComponentID component_id;
DisplayInfo *coords; DisplayInfo *coords;
...@@ -353,6 +352,7 @@ _kernel_oserror *event_menu_warning (wimp_Message message_block, TaskDescriptor ...@@ -353,6 +352,7 @@ _kernel_oserror *event_menu_warning (wimp_Message message_block, TaskDescriptor
return NULL; return NULL;
} }
object_id = menu_int->hdr.object_id;
while (*(pposition+1) != -1) { while (*(pposition+1) != -1) {
int_entry = menu_internal_entry (menu_int,*pposition++); int_entry = menu_internal_entry (menu_int,*pposition++);
...@@ -479,7 +479,7 @@ _kernel_oserror *event_menu_selection (int *menu_tree, TaskDescriptor *t, IDBloc ...@@ -479,7 +479,7 @@ _kernel_oserror *event_menu_selection (int *menu_tree, TaskDescriptor *t, IDBloc
MenuInternal *menu_int = global_menu.top; MenuInternal *menu_int = global_menu.top;
MenuInternalEntry *int_entry; MenuInternalEntry *int_entry;
int *pposition = menu_tree; int *pposition = menu_tree;
ObjectID object_id = global_menu.top->hdr.object_id; ObjectID object_id;
ObjectID submenu; ObjectID submenu;
ComponentID component_id; ComponentID component_id;
int click_event; int click_event;
...@@ -496,6 +496,7 @@ _kernel_oserror *event_menu_selection (int *menu_tree, TaskDescriptor *t, IDBloc ...@@ -496,6 +496,7 @@ _kernel_oserror *event_menu_selection (int *menu_tree, TaskDescriptor *t, IDBloc
/* We're not handling a menu OR menu tree too short! */ /* We're not handling a menu OR menu tree too short! */
return NULL; return NULL;
} }
while (*(pposition+1) != -1) { while (*(pposition+1) != -1) {
DEBUG debug_output ("e","Menu: position %d\n",*pposition); DEBUG debug_output ("e","Menu: position %d\n",*pposition);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment