client/X11: Check arguments in xf_Bitmap_SetSurface
authorOndrej Holy <oholy@redhat.com>
Mon, 4 Sep 2017 16:22:49 +0000 (18:22 +0200)
committerOndrej Holy <oholy@redhat.com>
Thu, 7 Sep 2017 07:38:44 +0000 (09:38 +0200)
Arguments of xf_Bitmap_SetSurface are not checked before use currently
which may lead to segfaults. It may happen if bitmap is not found in a
cache from some reason. Let's check the arguments before use similarly
as it is done in client/Windows/wf_graphics.c in order to avoid segfaults.

https://github.com/FreeRDP/FreeRDP/issues/4117

client/X11/xf_graphics.c

index de7e03f..67c8dec 100644 (file)
@@ -202,6 +202,10 @@ static BOOL xf_Bitmap_SetSurface(rdpContext* context, rdpBitmap* bitmap,
                                  BOOL primary)
 {
        xfContext* xfc = (xfContext*) context;
+
+       if (!context || (!bitmap && !primary))
+               return FALSE;
+
        xf_lock_x11(xfc, FALSE);
 
        if (primary)