From: Timo Sirainen Date: Wed, 23 May 2018 22:32:40 +0000 (+0300) Subject: cassandra: Fix empty binary parameters with prepared statements X-Git-Tag: 2.3.2.rc1~110 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=49544d7bb8ff97e970aba4a5e3d83be14e2c696c;p=thirdparty%2Fdovecot%2Fcore.git cassandra: Fix empty binary parameters with prepared statements Fixes: Panic: Trying to allocate 0 bytes --- diff --git a/src/lib-sql/driver-cassandra.c b/src/lib-sql/driver-cassandra.c index 713e957bc7..80a1fceddd 100644 --- a/src/lib-sql/driver-cassandra.c +++ b/src/lib-sql/driver-cassandra.c @@ -166,7 +166,7 @@ struct cassandra_sql_arg { unsigned int column_idx; char *value_str; - unsigned char *value_binary; + const unsigned char *value_binary; size_t value_binary_size; int64_t value_int64; }; @@ -1976,7 +1976,8 @@ driver_cassandra_statement_bind_binary(struct sql_statement *_stmt, } else if (stmt->prep != NULL) { struct cassandra_sql_arg *arg = driver_cassandra_add_pending_arg(stmt, column_idx); - arg->value_binary = p_memdup(_stmt->pool, value, value_size); + arg->value_binary = value_size == 0 ? &uchar_nul : + p_memdup(_stmt->pool, value, value_size); arg->value_binary_size = value_size; } }