From 4b15d71999e0d503a7e570893cc437a46fb4a1cf Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Wed, 2 Oct 2024 14:23:41 -0400 Subject: [PATCH] BMessage: Clean up properly when reading the stream fails. Otherwise we leave things in an inconsistent state and could wind up crashing later. Fixes #18088. --- src/kits/app/Message.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/kits/app/Message.cpp b/src/kits/app/Message.cpp index 7ce543f3c3..62fec0e167 100644 --- a/src/kits/app/Message.cpp +++ b/src/kits/app/Message.cpp @@ -1367,8 +1367,14 @@ BMessage::Unflatten(BDataIO* stream) } result = stream->Read(fData, fHeader->data_size); - if (result != (ssize_t)fHeader->data_size) + if (result != (ssize_t)fHeader->data_size) { + free(fData); + fData = NULL; + free(fFields); + fFields = NULL; + _InitHeader(); return result < 0 ? result : B_BAD_VALUE; + } } }