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

Reply via email to