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.
This commit is contained in:
Augustin Cavalier
2024-10-02 14:23:41 -04:00
parent 69899fa72e
commit 4b15d71999
+7 -1
View File
@@ -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;
}
}
}