From 1dec876930fec6dedd909bb846cf3a31cbdf2d59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20A=C3=9Fmus?= Date: Mon, 13 Mar 2006 12:28:20 +0000 Subject: [PATCH] * Micheals patch alone didn't fix the problem. I'm also wondering where those exceptions are actually caught. * when unflattening into a message, MakeEmpty() will be called on it first. This will actually fix the crashing bug I observed, but it makes me suspicious - there should be an error somewhere else. Something to do with initialization perhaps? git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16763 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kits/app/r5_message.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/kits/app/r5_message.cpp b/src/kits/app/r5_message.cpp index 46ced99264..53fd8e7aef 100644 --- a/src/kits/app/r5_message.cpp +++ b/src/kits/app/r5_message.cpp @@ -284,6 +284,8 @@ unflatten_r5_message(uint32 format, BMessage *message, const char *flatBuffer) status_t unflatten_r5_message(uint32 format, BMessage *message, BDataIO *stream) { + message->MakeEmpty(); + TReadHelper reader(stream); BMessage::Private messagePrivate(message); BMessage::message_header *header = messagePrivate.GetMessageHeader(); @@ -360,6 +362,9 @@ unflatten_r5_message(uint32 format, BMessage *message, BDataIO *stream) } else reader(dataSize); + if (dataSize <= 0) + return B_ERROR; + // name uint8 nameLength; reader(nameLength);