commit 16f6b9460c6da8f32848bfdfd09cebf8f48d14b5
parent 3d10823017ebb69d92c1c4b3ac5d663b257eacb4
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
Date: Wed, 29 Sep 2021 15:19:02 +0300
connection_alloc_memory(): fixed missing update of buffers sizes
Diffstat:
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/src/microhttpd/connection.c b/src/microhttpd/connection.c
@@ -221,14 +221,18 @@ connection_alloc_memory (struct MHD_Connection *connection,
if (c->write_buffer_size - c->write_buffer_append_offset >= need_to_free)
{
char *buf;
+ const size_t new_buf_size = c->write_buffer_size - need_to_free;
buf = MHD_pool_reallocate (pool,
c->write_buffer,
c->write_buffer_size,
- c->write_buffer_size - need_to_free);
+ new_buf_size);
mhd_assert (c->write_buffer == buf);
#ifdef NDEBUG
(void) buf; /* mute compiler warning */
#endif
+ mhd_assert (c->write_buffer_append_offset <= new_buf_size);
+ mhd_assert (c->write_buffer_send_offset <= new_buf_size);
+ c->write_buffer_size = new_buf_size;
}
else
return NULL;
@@ -239,14 +243,17 @@ connection_alloc_memory (struct MHD_Connection *connection,
if (c->read_buffer_size - c->read_buffer_offset >= need_to_free)
{
char *buf;
+ const size_t new_buf_size = c->read_buffer_size - need_to_free;
buf = MHD_pool_reallocate (pool,
c->read_buffer,
c->read_buffer_size,
- c->read_buffer_size - need_to_free);
+ new_buf_size);
mhd_assert (c->read_buffer == buf);
#ifdef NDEBUG
(void) buf; /* mute compiler warning */
#endif
+ mhd_assert (c->read_buffer_offset <= new_buf_size);
+ c->read_buffer_size = new_buf_size;
}
else
return NULL;