diff options
author | Evgeny Grin (Karlson2k) <k2k@narod.ru> | 2019-06-16 17:49:35 +0300 |
---|---|---|
committer | Evgeny Grin (Karlson2k) <k2k@narod.ru> | 2019-06-16 17:52:03 +0300 |
commit | c98aa3d33472f82014e9cd80d1a3bf0ee9fe80c1 (patch) | |
tree | 09577526f60e36a7531147e9547ef67644376dc9 | |
parent | d12ed49fd33d991639512ee7637bfc644da3f123 (diff) | |
download | libmicrohttpd-c98aa3d33472f82014e9cd80d1a3bf0ee9fe80c1.tar.gz libmicrohttpd-c98aa3d33472f82014e9cd80d1a3bf0ee9fe80c1.zip |
memorypool: fixed MHD_pool_reset()
-rw-r--r-- | src/microhttpd/memorypool.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/src/microhttpd/memorypool.c b/src/microhttpd/memorypool.c index 3770b8c3..a6053fb2 100644 --- a/src/microhttpd/memorypool.c +++ b/src/microhttpd/memorypool.c | |||
@@ -331,6 +331,7 @@ MHD_pool_reset (struct MemoryPool *pool, | |||
331 | { | 331 | { |
332 | mhd_assert (pool->end >= pool->pos); | 332 | mhd_assert (pool->end >= pool->pos); |
333 | mhd_assert (pool->size >= pool->end - pool->pos); | 333 | mhd_assert (pool->size >= pool->end - pool->pos); |
334 | mhd_assert (copy_bytes < new_size); | ||
334 | mhd_assert (keep != NULL || copy_bytes == 0); | 335 | mhd_assert (keep != NULL || copy_bytes == 0); |
335 | mhd_assert (keep == NULL || pool->memory <= (uint8_t*)keep); | 336 | mhd_assert (keep == NULL || pool->memory <= (uint8_t*)keep); |
336 | mhd_assert (keep == NULL || pool->memory + pool->size >= (uint8_t*)keep + copy_bytes); | 337 | mhd_assert (keep == NULL || pool->memory + pool->size >= (uint8_t*)keep + copy_bytes); |
@@ -341,17 +342,15 @@ MHD_pool_reset (struct MemoryPool *pool, | |||
341 | memmove (pool->memory, | 342 | memmove (pool->memory, |
342 | keep, | 343 | keep, |
343 | copy_bytes); | 344 | copy_bytes); |
344 | keep = pool->memory; | ||
345 | } | 345 | } |
346 | pool->end = pool->size; | ||
347 | /* technically not needed, but safer to zero out */ | 346 | /* technically not needed, but safer to zero out */ |
348 | if (pool->size > copy_bytes) | 347 | if (pool->size > copy_bytes) |
349 | memset (&pool->memory[copy_bytes], | 348 | memset (&pool->memory[copy_bytes], |
350 | 0, | 349 | 0, |
351 | pool->size - copy_bytes); | 350 | pool->size - copy_bytes); |
352 | if (NULL != keep) | 351 | pool->pos = ROUND_TO_ALIGN (new_size); |
353 | pool->pos = ROUND_TO_ALIGN (new_size); | 352 | pool->end = pool->size; |
354 | return keep; | 353 | return pool->memory; |
355 | } | 354 | } |
356 | 355 | ||
357 | 356 | ||