]> 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:04 +0000 (10:53 +0300)
Fixes:
Panic: Trying to allocate 0 bytes

src/lib-sql/driver-cassandra.c

index 713e957bc79cf3ed0bd234c358d80c11653b78a7..80a1fceddd8b25e64946d8a8ee12fd663a660dde 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;
 };
@@ -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;
        }
 }