Fix avro CREATE TABLE message

The string was assumed to be null-terminated when in reality it was not.
This commit is contained in:
Markus Mäkelä 2017-07-04 12:21:25 +03:00
parent 5c50045227
commit 5ed6483f01
3 changed files with 4 additions and 4 deletions

View File

@ -1040,7 +1040,7 @@ void handle_query_event(AVRO_INSTANCE *router, REP_HEADER *hdr, int *pending_tra
}
else
{
created = table_create_alloc(sql, db);
created = table_create_alloc(sql, len, db);
}
if (created && !save_and_replace_table_create(router, created))

View File

@ -694,7 +694,7 @@ TABLE_CREATE* table_create_from_schema(const char* file, const char* db,
* @param db Database where this query was executed
* @return New CREATE_TABLE object or NULL if an error occurred
*/
TABLE_CREATE* table_create_alloc(const char* sql, const char* event_db)
TABLE_CREATE* table_create_alloc(const char* sql, int len, const char* event_db)
{
/** Extract the table definition so we can get the column names from it */
int stmt_len = 0;
@ -704,7 +704,7 @@ TABLE_CREATE* table_create_alloc(const char* sql, const char* event_db)
char database[MYSQL_DATABASE_MAXLEN + 1];
const char *db = event_db;
MXS_INFO("Create table: %s", sql);
MXS_INFO("Create table: %.*s", len, sql);
if (!get_table_name(sql, table))
{

View File

@ -301,7 +301,7 @@ extern void read_table_info(uint8_t *ptr, uint8_t post_header_len, uint64_t *tab
char* dest, size_t len);
extern TABLE_MAP *table_map_alloc(uint8_t *ptr, uint8_t hdr_len, TABLE_CREATE* create);
extern void table_map_free(TABLE_MAP *map);
extern TABLE_CREATE* table_create_alloc(const char* sql, const char* db);
extern TABLE_CREATE* table_create_alloc(const char* sql, int len, const char* db);
extern TABLE_CREATE* table_create_copy(AVRO_INSTANCE *router, const char* sql, size_t len, const char* db);
extern void table_create_free(TABLE_CREATE* value);
extern bool table_create_save(TABLE_CREATE *create, const char *filename);