JFJochReceiver: add safety for overruninng the buffer
This commit is contained in:
@@ -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(),
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user