From a48ef9e817eccd46437c6748246623ea5cb44e84 Mon Sep 17 00:00:00 2001 From: Stefano Ceccherini Date: Wed, 12 Aug 2015 00:40:06 +0200 Subject: [PATCH] AppServer: check for NULL bitmap. Consistently check for NULL the ServerBitmap pointer. There seems to be cases where BView::DragMessage could pass an invalid Bitmap token to app_server. Maybe it's when a client only bitmap is passed, I don't know. Anyway, this is defensive programming, and at least we check for NULL consistently now. This fixes #11681. Note that SuperFreeCell still crashes, but at least app_server doesn't crash. --- src/servers/app/EventDispatcher.cpp | 3 ++- src/servers/app/ServerWindow.cpp | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/servers/app/EventDispatcher.cpp b/src/servers/app/EventDispatcher.cpp index b45f3c9298..9c8fb902f6 100644 --- a/src/servers/app/EventDispatcher.cpp +++ b/src/servers/app/EventDispatcher.cpp @@ -612,7 +612,8 @@ EventDispatcher::SetDragMessage(BMessage& message, if (fLastButtons == 0) { // mouse buttons has already been released or was never pressed - bitmap->ReleaseReference(); + if (bitmap != NULL) + bitmap->ReleaseReference(); return; } diff --git a/src/servers/app/ServerWindow.cpp b/src/servers/app/ServerWindow.cpp index 242438faf2..fef86d05c6 100644 --- a/src/servers/app/ServerWindow.cpp +++ b/src/servers/app/ServerWindow.cpp @@ -2074,7 +2074,8 @@ fDesktop->UnlockSingleWindow(); fDesktop->EventDispatcher().SetDragMessage(dragMessage, bitmap, offset); fDesktop->LockSingleWindow(); - bitmap->ReleaseReference(); + if (bitmap != NULL) + bitmap->ReleaseReference(); } delete[] buffer; }