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.2.36.1~26 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b438bf706523fdd8292079c77d48413f5af3f307;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 816f83796f..d4b18bffe8 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; }; @@ -1973,7 +1973,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; } }