]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
cassandra: Fix empty binary parameters with prepared statements
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Wed, 23 May 2018 22:32:40 +0000 (01:32 +0300)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Fri, 25 May 2018 07:53:25 +0000 (10:53 +0300)
Fixes:
Panic: Trying to allocate 0 bytes

src/lib-sql/driver-cassandra.c

index 816f83796f28d49fdf71bcc7a8c521b47038f5b0..d4b18bffe81ca016697a11e5255fa0f1b6b57cdc 100644 (file)
@@ -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;
        }
 }