Sebastian Lackner : user32: Fix invalid memory access and leak if alloc_user_handle fails (Coverity).
Alexandre Julliard
julliard at wine.codeweavers.com
Tue Mar 17 11:01:59 CDT 2015
Module: wine
Branch: master
Commit: a9ff334976e78808a36659df24d8b3e6a38f3b26
URL: http://source.winehq.org/git/wine.git/?a=commit;h=a9ff334976e78808a36659df24d8b3e6a38f3b26
Author: Sebastian Lackner <sebastian at fds-team.de>
Date: Tue Mar 17 06:14:45 2015 +0100
user32: Fix invalid memory access and leak if alloc_user_handle fails (Coverity).
---
dlls/user32/cursoricon.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/dlls/user32/cursoricon.c b/dlls/user32/cursoricon.c
index 8504bdc..f7b6bca 100644
--- a/dlls/user32/cursoricon.c
+++ b/dlls/user32/cursoricon.c
@@ -123,12 +123,14 @@ static HICON alloc_icon_handle( BOOL is_ani, UINT num_steps )
{
struct cursoricon_object *obj;
int icon_size;
+ HICON handle;
if (is_ani)
icon_size = FIELD_OFFSET( struct animated_cursoricon_object, frames[num_steps] );
else
icon_size = sizeof( struct static_cursoricon_object );
obj = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, icon_size );
+ if (!obj) return NULL;
obj->delay = 0;
obj->is_ani = is_ani;
@@ -139,7 +141,10 @@ static HICON alloc_icon_handle( BOOL is_ani, UINT num_steps )
ani_icon_data->num_steps = num_steps;
ani_icon_data->num_frames = num_steps; /* changed later for some animated cursors */
}
- return alloc_user_handle( &obj->obj, USER_ICON );
+
+ if (!(handle = alloc_user_handle( &obj->obj, USER_ICON )))
+ HeapFree( GetProcessHeap(), 0, obj );
+ return handle;
}
static struct cursoricon_object *get_icon_ptr( HICON handle )
More information about the wine-cvs
mailing list