diff --git a/gdk/win32/gdkproperty-win32.c b/gdk/win32/gdkproperty-win32.c index cc0bd25b7c..a2ef3bee45 100644 --- a/gdk/win32/gdkproperty-win32.c +++ b/gdk/win32/gdkproperty-win32.c @@ -186,6 +186,12 @@ _gdk_win32_window_change_property (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 c2a0893645..8c54240782 100644 --- a/gdk/win32/gdkselection-win32.c +++ b/gdk/win32/gdkselection-win32.c @@ -1285,6 +1285,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);