diff --git a/gdk/win32/gdkproperty-win32.c b/gdk/win32/gdkproperty-win32.c index 39163b52ba..88a29e8024 100644 --- a/gdk/win32/gdkproperty-win32.c +++ b/gdk/win32/gdkproperty-win32.c @@ -193,6 +193,12 @@ gdk_property_change (GdkWindow *window, format == 8 && mode == GDK_PROP_MODE_REPLACE) { + if (type == _image_bmp && nelements < sizeof (BITMAPFILEHEADER)) + { + g_warning ("Clipboard contains invalid bitmap data"); + return; + } + if (type == _utf8_string) { if (!OpenClipboard (GDK_WINDOW_HWND (window))) diff --git a/gdk/win32/gdkselection-win32.c b/gdk/win32/gdkselection-win32.c index 41d4d3dc41..1b497c577d 100644 --- a/gdk/win32/gdkselection-win32.c +++ b/gdk/win32/gdkselection-win32.c @@ -1286,6 +1286,8 @@ _gdk_win32_selection_convert_to_dib (HGLOBAL hdata, if (target == _image_bmp) { + g_return_val_if_fail (GlobalSize (hdata) >= sizeof (BITMAPFILEHEADER), NULL); + /* No conversion is needed, just strip the BITMAPFILEHEADER */ HGLOBAL hdatanew; SIZE_T size = GlobalSize (hdata) - sizeof (BITMAPFILEHEADER);