From f61190f31dad9b49a13bbeaa85a75400ec5a6810 Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Mon, 11 May 2026 13:16:55 +0300 Subject: [PATCH] Fix send_list/outbox desync on failed SEC_READ_BMP (possible memory leak) --- src/client/msgr_send.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/client/msgr_send.cpp b/src/client/msgr_send.cpp index ae281003..8e18c47f 100644 --- a/src/client/msgr_send.cpp +++ b/src/client/msgr_send.cpp @@ -99,10 +99,15 @@ void osd_messenger_t::outbox_push(osd_op_t *cur_op) if (cur_op->req.hdr.opcode == OSD_OP_SEC_READ_BMP) { if (cur_op->op_type == OSD_OP_IN && cur_op->reply.hdr.retval > 0) + { to_send_list.push_back((iovec){ .iov_base = cur_op->buf, .iov_len = (size_t)cur_op->reply.hdr.retval }); + to_outbox.push_back((msgr_sendp_t){ .op = cur_op, .flags = 0 }); + } else if (cur_op->op_type == OSD_OP_OUT && cur_op->req.sec_read_bmp.len > 0) + { to_send_list.push_back((iovec){ .iov_base = cur_op->buf, .iov_len = (size_t)cur_op->req.sec_read_bmp.len }); - to_outbox.push_back((msgr_sendp_t){ .op = cur_op, .flags = 0 }); + to_outbox.push_back((msgr_sendp_t){ .op = cur_op, .flags = 0 }); + } } if (cur_op->op_type == OSD_OP_IN) {