JFJochReceiver: add safety for overruninng the buffer

This commit is contained in:
2023-05-09 12:09:23 +02:00
parent a9c37ce418
commit 5d63bac30f
2 changed files with 5 additions and 1 deletions
+3
View File
@@ -463,6 +463,9 @@ int64_t JFJochReceiver::FrameTransformationThread() {
if (push_images_to_writer) {
PrepareCBORImage(message, experiment, nullptr, 0);
serializer.SerializeImage(message);
if (serializer.GetRemainingBuffer() < experiment.GetMaxCompressedSize())
throw JFJochException(JFJochExceptionCategory::ArrayOutOfBounds,
"Not enough memory to save image");
size_t image_size = transformation.SaveCompressedImage(serializer.GetImageAppendLocation());
serializer.AppendImage(image_size);
image_pusher.SendImage(const_cast<uint8_t *>(serializer.GetBuffer()), serializer.GetBufferSize(),
+2 -1
View File
@@ -88,7 +88,8 @@ class JFJochReceiver {
int64_t max_image_number_sent = 0;
std::mutex max_image_number_sent_mutex;
const size_t serializer_buffer_size = experiment.GetMaxCompressedSize() + 1024*1024; // max compressed size + 1 MiB
const size_t serializer_buffer_size = experiment.GetMaxCompressedSize() + 1024*1024;
// max compressed size + 1 MiB reserve for spots and rad. integration results
void PinThreadToDevice(uint16_t data_stream);
void PrepareConversionOnCPU();