add overflow check to cx_array_insert()

Mon, 22 Dec 2025 16:40:24 +0100

author
Mike Becker <universe@uap-core.de>
date
Mon, 22 Dec 2025 16:40:24 +0100
changeset 1656
68a03cf89e15
parent 1655
745ae507ee14
child 1657
c6a0381ab9b7

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
         }

mercurial