Mon, 22 Dec 2025 16:40:24 +0100
add overflow check to cx_array_insert()
| src/array_list.c | file | annotate | diff | comparison | revisions |
--- a/src/array_list.c Mon Dec 22 16:36:06 2025 +0100 +++ b/src/array_list.c Mon Dec 22 16:40:24 2025 +0100 @@ -101,9 +101,16 @@ if (index > array->size) return -1; if (n == 0) return 0; + // calculate required capacity + size_t req_capacity = array->size + n; + if (req_capacity <= array->size) { + errno = EOVERFLOW; + return -1; + } + // guarantee enough capacity - if (array->capacity < array->size + n) { - const size_t new_capacity = cx_array_grow_capacity(array->capacity,array->size + n); + if (array->capacity < req_capacity) { + const size_t new_capacity = cx_array_grow_capacity(array->capacity,req_capacity); if (cxReallocateArray(allocator, &array->data, new_capacity, elem_size)) { return -1; // LCOV_EXCL_LINE }