Date: Tuesday, October 3, 2006 @ 10:29:30
Author: csaba
Path: /cvsroot/carob/libmysequoia
Modified: src/CarobMySQL.cpp (1.81 -> 1.82) test/TestMySQLAPI.cpp (1.39 ->
1.40) test/TestMySQLAPI.hpp (1.16 -> 1.17)
Fixed the segfault in mysql_real_escape_string() when length==0.
Added unit test.
This is a fix for LMS-24.
-----------------------+
src/CarobMySQL.cpp | 3 +++
test/TestMySQLAPI.cpp | 6 ++++++
test/TestMySQLAPI.hpp | 2 ++
3 files changed, 11 insertions(+)
Index: libmysequoia/src/CarobMySQL.cpp
diff -u libmysequoia/src/CarobMySQL.cpp:1.81
libmysequoia/src/CarobMySQL.cpp:1.82
--- libmysequoia/src/CarobMySQL.cpp:1.81 Fri Sep 29 17:36:37 2006
+++ libmysequoia/src/CarobMySQL.cpp Tue Oct 3 10:29:30 2006
@@ -1239,6 +1239,9 @@
unsigned long
CarobMYSQL::real_escape_string (char *to, const char *from, unsigned long
length)
{
+ if (length == 0)
+ return 0;
+
try
{
wstring w = to_wstring(string(from, length));
Index: libmysequoia/test/TestMySQLAPI.cpp
diff -u libmysequoia/test/TestMySQLAPI.cpp:1.39
libmysequoia/test/TestMySQLAPI.cpp:1.40
--- libmysequoia/test/TestMySQLAPI.cpp:1.39 Wed Jul 26 15:40:40 2006
+++ libmysequoia/test/TestMySQLAPI.cpp Tue Oct 3 10:29:30 2006
@@ -961,3 +961,9 @@
CPPUNIT_ASSERT(mysql_query(mysql, "delete ignore from t1 where t1.a <>
(select a from t2)") == 0);
CPPUNIT_ASSERT(mysql_warning_count(mysql) == 1);
}
+
+void TestMySQLAPI::bug_lms_24_test(void)
+{
+ CPPUNIT_ASSERT(mysql_real_connect(mysql, HOST, USER1, PASSWD1, DB1, 0, 0, 0)
!= 0);
+ CPPUNIT_ASSERT(mysql_real_escape_string(mysql, 0, 0, 0) == 0);
+}
Index: libmysequoia/test/TestMySQLAPI.hpp
diff -u libmysequoia/test/TestMySQLAPI.hpp:1.16
libmysequoia/test/TestMySQLAPI.hpp:1.17
--- libmysequoia/test/TestMySQLAPI.hpp:1.16 Thu Jul 13 16:30:51 2006
+++ libmysequoia/test/TestMySQLAPI.hpp Tue Oct 3 10:29:30 2006
@@ -63,6 +63,7 @@
CPPUNIT_TEST (bug_lms_9_test);
CPPUNIT_TEST (bug_lms_10_test);
CPPUNIT_TEST (mysql_warning_count_test);
+ CPPUNIT_TEST (bug_lms_24_test);
CPPUNIT_TEST_SUITE_END ();
public:
@@ -103,6 +104,7 @@
void bug_lms_9_test(void);
void bug_lms_10_test(void);
void mysql_warning_count_test(void);
+ void bug_lms_24_test(void);
private:
MYSQL *mysql;
};
_______________________________________________
Carob-commits mailing list
[email protected]
https://forge.continuent.org/mailman/listinfo/carob-commits