mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
MDEV-29473 UBSAN: Signed integer overflow: X * Y cannot be represented in type 'int' in strings/dtoa.c
Fixing a few problems relealed by UBSAN in type_float.test - multiplication overflow in dtoa.c - uninitialized Field::geom_type (and Field::srid as well) - Wrong call-back function types used in combination with SHOW_FUNC. Changes in the mysql_show_var_func data type definition were not properly addressed all around the code by the following commits:b4ff64568c
18feb62fee
0ee879ff8a
Adding a helper SHOW_FUNC_ENTRY() function and replacing all mysql_show_var_func declarations using SHOW_FUNC to SHOW_FUNC_ENTRY, to catch mysql_show_var_func in the future at compilation time.
This commit is contained in:
@@ -400,6 +400,16 @@ struct st_mysql_show_var {
|
||||
};
|
||||
struct system_status_var;
|
||||
typedef int (*mysql_show_var_func)(void*, struct st_mysql_show_var*, void *, struct system_status_var *status_var, enum enum_var_type);
|
||||
static inline
|
||||
struct st_mysql_show_var SHOW_FUNC_ENTRY(const char *name,
|
||||
mysql_show_var_func func_arg)
|
||||
{
|
||||
struct st_mysql_show_var tmp;
|
||||
tmp.name= name;
|
||||
tmp.value= (void*) func_arg;
|
||||
tmp.type= SHOW_FUNC;
|
||||
return tmp;
|
||||
};
|
||||
struct st_mysql_sys_var;
|
||||
struct st_mysql_value;
|
||||
typedef int (*mysql_var_check_func)(void* thd,
|
||||
|
Reference in New Issue
Block a user