]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
driver-pgsql: Fix assert-crash when using binary fields
authorSiavash Tavakoli <siavash.tavakoli@open-xchange.com>
Mon, 27 Sep 2021 10:35:38 +0000 (11:35 +0100)
committertimo.sirainen <timo.sirainen@open-xchange.com>
Wed, 29 Sep 2021 18:02:23 +0000 (18:02 +0000)
array_idx_modifiable() changed behavior in
1d4e5de8414ed93d1c810b30a91ad83d6d954861 and doesn't allocate space
anymore.

Fixes:
Panic: file array.c: line 10 (array_idx_modifiable_i): assertion failed: (idx < array->buffer->used / array->element_size)

src/lib-sql/driver-pgsql.c

index d04c20d831392acab6cd1aba3ab563638fe16f17..d82c33754a1616b50481067526b11426e95ce924 100644 (file)
@@ -816,7 +816,7 @@ driver_pgsql_result_get_field_value_binary(struct sql_result *_result,
        if (!array_is_created(&result->binary_values))
                i_array_init(&result->binary_values, idx + 1);
 
-       binary_value = array_idx_modifiable(&result->binary_values, idx);
+       binary_value = array_idx_get_space(&result->binary_values, idx);
        if (binary_value->value == NULL) {
                binary_value->value =
                        PQunescapeBytea((const unsigned char *)value,