mirror of
https://github.com/libretro/RetroArch
synced 2025-03-02 19:13:34 +00:00
prevent write-past-end-of-buffer when signed value wraps (#15868)
This commit is contained in:
parent
1a97b0edd4
commit
b43e1f3caf
10
deps/rcheevos/src/rcheevos/alloc.c
vendored
10
deps/rcheevos/src/rcheevos/alloc.c
vendored
@ -22,11 +22,13 @@ void* rc_alloc_scratch(void* pointer, int32_t* offset, uint32_t size, uint32_t a
|
||||
buffer = &scratch->buffer;
|
||||
do {
|
||||
const uint32_t aligned_buffer_offset = (buffer->offset + alignment - 1) & ~(alignment - 1);
|
||||
const uint32_t remaining = sizeof(buffer->buffer) - aligned_buffer_offset;
|
||||
if (aligned_buffer_offset < sizeof(buffer->buffer)) {
|
||||
const uint32_t remaining = sizeof(buffer->buffer) - aligned_buffer_offset;
|
||||
|
||||
if (remaining >= size) {
|
||||
/* claim the required space from an existing buffer */
|
||||
return rc_alloc(buffer->buffer, &buffer->offset, size, alignment, NULL, -1);
|
||||
if (remaining >= size) {
|
||||
/* claim the required space from an existing buffer */
|
||||
return rc_alloc(buffer->buffer, &buffer->offset, size, alignment, NULL, -1);
|
||||
}
|
||||
}
|
||||
|
||||
if (!buffer->next)
|
||||
|
Loading…
x
Reference in New Issue
Block a user