summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRamil Kalimullin <ramil@mysql.com>2009-05-12 13:18:27 +0500
committerRamil Kalimullin <ramil@mysql.com>2009-05-12 13:18:27 +0500
commit8b9084eff4a7142192bb1ff82c2e982ed546a78c (patch)
treeea48c0530946dca7bf2c0b1e27eefecc33b627f6
parentd615a11bd5d3572f51c6341c02338e7c742e29c0 (diff)
downloadmariadb-git-8b9084eff4a7142192bb1ff82c2e982ed546a78c.tar.gz
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'.
-rw-r--r--mysql-test/r/func_str.result9
-rw-r--r--mysql-test/t/func_str.test10
-rw-r--r--sql/item_strfunc.cc4
3 files changed, 21 insertions, 2 deletions
diff --git a/mysql-test/r/func_str.result b/mysql-test/r/func_str.result
index 1d7395ae14d..75f8983e838 100644
--- a/mysql-test/r/func_str.result
+++ b/mysql-test/r/func_str.result
@@ -2187,4 +2187,13 @@ SELECT DATE_FORMAT(c, GET_FORMAT(DATE, 'eur')) h, CONCAT(UPPER(aa),', ', aa) i F
h i
31.12.2008 AAAAAA, aaaaaa
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
diff --git a/mysql-test/t/func_str.test b/mysql-test/t/func_str.test
index 389538c4cc0..4b0f91e4408 100644
--- a/mysql-test/t/func_str.test
+++ b/mysql-test/t/func_str.test
@@ -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;
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
diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc
index 4640929b2bf..bc2dcb9c61b 100644
--- a/sql/item_strfunc.cc
+++ b/sql/item_strfunc.cc
@@ -2832,7 +2832,7 @@ String *Item_load_file::val_str(String *str)
)
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);
/* 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))
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;
if (my_read(file, (byte*) tmp_value.ptr(), stat_info.st_size, MYF(MY_NABP)))
{