mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Fix for bug#44774: load_file function produces valgrind warnings
Problem: using LOAD_FILE() in some cases we pass a file name string without a trailing '\0' to fn_format() which relies on that however. That may lead to valgrind warnings. Fix: add a trailing '\0' to the file name passed to fn_format(). mysql-test/r/func_str.result: Fix for bug#44774: load_file function produces valgrind warnings - test result. mysql-test/t/func_str.test: Fix for bug#44774: load_file function produces valgrind warnings - test case. sql/item_strfunc.cc: Fix for bug#44774: load_file function produces valgrind warnings - passing a file name to fn_format(), file_name->c_ptr() replaced with file_name->c_ptr_safe() to ensure we have a trailing '\0'.
This commit is contained in:
@ -2187,4 +2187,13 @@ SELECT DATE_FORMAT(c, GET_FORMAT(DATE, 'eur')) h, CONCAT(UPPER(aa),', ', aa) i F
|
|||||||
h i
|
h i
|
||||||
31.12.2008 AAAAAA, aaaaaa
|
31.12.2008 AAAAAA, aaaaaa
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
#
|
||||||
|
# BUG#44774: load_file function produces valgrind warnings
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a TINYBLOB);
|
||||||
|
INSERT INTO t1 VALUES ('aaaaaaaa');
|
||||||
|
SELECT LOAD_FILE(a) FROM t1;
|
||||||
|
LOAD_FILE(a)
|
||||||
|
NULL
|
||||||
|
DROP TABLE t1;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
@ -1168,4 +1168,14 @@ INSERT INTO t1 VALUES ('2008-12-31','aaaaaa');
|
|||||||
SELECT DATE_FORMAT(c, GET_FORMAT(DATE, 'eur')) h, CONCAT(UPPER(aa),', ', aa) i FROM t1;
|
SELECT DATE_FORMAT(c, GET_FORMAT(DATE, 'eur')) h, CONCAT(UPPER(aa),', ', aa) i FROM t1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # BUG#44774: load_file function produces valgrind warnings
|
||||||
|
--echo #
|
||||||
|
CREATE TABLE t1 (a TINYBLOB);
|
||||||
|
INSERT INTO t1 VALUES ('aaaaaaaa');
|
||||||
|
SELECT LOAD_FILE(a) FROM t1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
|
||||||
--echo End of 5.0 tests
|
--echo End of 5.0 tests
|
||||||
|
@ -2832,7 +2832,7 @@ String *Item_load_file::val_str(String *str)
|
|||||||
)
|
)
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
(void) fn_format(path, file_name->c_ptr(), mysql_real_data_home, "",
|
(void) fn_format(path, file_name->c_ptr_safe(), mysql_real_data_home, "",
|
||||||
MY_RELATIVE_PATH | MY_UNPACK_FILENAME);
|
MY_RELATIVE_PATH | MY_UNPACK_FILENAME);
|
||||||
|
|
||||||
/* Read only allowed from within dir specified by secure_file_priv */
|
/* Read only allowed from within dir specified by secure_file_priv */
|
||||||
@ -2858,7 +2858,7 @@ String *Item_load_file::val_str(String *str)
|
|||||||
}
|
}
|
||||||
if (tmp_value.alloc(stat_info.st_size))
|
if (tmp_value.alloc(stat_info.st_size))
|
||||||
goto err;
|
goto err;
|
||||||
if ((file = my_open(file_name->c_ptr(), O_RDONLY, MYF(0))) < 0)
|
if ((file = my_open(file_name->ptr(), O_RDONLY, MYF(0))) < 0)
|
||||||
goto err;
|
goto err;
|
||||||
if (my_read(file, (byte*) tmp_value.ptr(), stat_info.st_size, MYF(MY_NABP)))
|
if (my_read(file, (byte*) tmp_value.ptr(), stat_info.st_size, MYF(MY_NABP)))
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user