1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

Bug #31674599: THE UDF_INIT() FUNCTION CAUSE SERVER CRASH

This commit is contained in:
Sergei Golubchik
2021-04-26 16:52:32 +02:00
parent 883b723d7c
commit 4f63b6cf53
3 changed files with 21 additions and 3 deletions

View File

@ -196,7 +196,7 @@ void udf_init()
DBUG_PRINT("info",("init udf record"));
LEX_STRING name;
name.str=get_field(&mem, table->field[0]);
name.length = (uint) strlen(name.str);
name.length = (uint) safe_strlen(name.str);
char *dl_name= get_field(&mem, table->field[2]);
bool new_dl=0;
Item_udftype udftype=UDFTYPE_FUNCTION;
@ -210,12 +210,12 @@ void udf_init()
On windows we must check both FN_LIBCHAR and '/'.
*/
if (check_valid_path(dl_name, strlen(dl_name)) ||
if (!name.str || !dl_name || check_valid_path(dl_name, strlen(dl_name)) ||
check_string_char_length(&name, 0, NAME_CHAR_LEN,
system_charset_info, 1))
{
sql_print_error("Invalid row in mysql.func table for function '%.64s'",
name.str);
safe_str(name.str));
continue;
}