changeset 22978:91b975cdeb87

cassandra: Fix empty binary parameters with prepared statements Fixes: Panic: Trying to allocate 0 bytes
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Thu, 24 May 2018 01:32:40 +0300
parents 2f1353b11b6b
children ace8424d6f65
files src/lib-sql/driver-cassandra.c
diffstat 1 files changed, 3 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-sql/driver-cassandra.c	Tue May 22 16:06:15 2018 +0300
+++ b/src/lib-sql/driver-cassandra.c	Thu May 24 01:32:40 2018 +0300
@@ -166,7 +166,7 @@
 	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 @@
 	} 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;
 	}
 }