Pantek Library
Hosting Provided By
CybrHost
High Speed Hosting

bk commit into 4.1 tree (holyfoot:1.2676) BUG#29494

From: <holyfoot(at)mysql.com>
Date: Fri Jul 20 2007 - 06:42:17 EDT


Below is the list of changes that have just been committed into a local 4.1 repository of hf. When hf does a push these changes will be propagated to the main repository and, within 24 hours after the push, to the public repository.
For information on how to access the public repository see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html

ChangeSet@1.2676, 2007-07-20 15:42:16+05:00, holyfoot@mysql.com +1 -0   Bug #29494 Field packet with NULL fields crashes libmysqlclient.   

  unpack_fields() didn't expect NULL_LENGHT in the field's descriptions.   In this case we get NULL in the resulting string so cannot use   strdup_root to make a copy of it.
  strdup_root changed with strmake_root as it's NULL-safe

  sql-common/client.c@1.97, 2007-07-20 15:42:14+05:00, holyfoot@mysql.com +9 -9     Bug #29494 Field packet with NULL fields crashes libmysqlclient     

    strdup_root changed with strmake_root in unpack_fields()

diff -Nrup a/sql-common/client.c b/sql-common/client.c

--- a/sql-common/client.c	2007-01-29 17:31:47 +04:00
+++ b/sql-common/client.c	2007-07-20 15:42:14 +05:00

@@ -602,7 +602,7 @@ net_safe_read(MYSQL *mysql)

   if (len == packet_error || len == 0)
   {

     DBUG_PRINT("error",("Wrong connection or packet. fd: %s  len: %d",
-			vio_description(net->vio),len));
+			vio_description(net->vio), len));
 #ifdef MYSQL_SERVER
     if (vio_was_interrupted(net->vio))
       return (packet_error);

@@ -858,7 +858,7 @@ void STDCALL

 mysql_free_result(MYSQL_RES *result)
 {
   DBUG_ENTER("mysql_free_result");
-  DBUG_PRINT("enter",("mysql_res: %lx",result));
+  DBUG_PRINT("enter",("mysql_res: %lx", result));

   if (result)
   {
     MYSQL *mysql= result->handle;
@@ -1174,14 +1174,14 @@ unpack_fields(MYSQL_DATA *data,MEM_ROOT

     {
       uchar *pos;
       /* fields count may be wrong */
-      DBUG_ASSERT ((field - result) < fields);
+      DBUG_ASSERT ((uint) (field - result) < fields);
       cli_fetch_lengths(&lengths[0], row->data, default_value ? 8 : 7);
-      field->catalog  = strdup_root(alloc,(char*) row->data[0]);
-      field->db       = strdup_root(alloc,(char*) row->data[1]);
-      field->table    = strdup_root(alloc,(char*) row->data[2]);
-      field->org_table= strdup_root(alloc,(char*) row->data[3]);
-      field->name     = strdup_root(alloc,(char*) row->data[4]);
-      field->org_name = strdup_root(alloc,(char*) row->data[5]);
+      field->catalog=   strmake_root(alloc,(char*) row->data[0], lengths[0]);
+      field->db=        strmake_root(alloc,(char*) row->data[1], lengths[1]);
+      field->table=     strmake_root(alloc,(char*) row->data[2], lengths[2]);
+      field->org_table= strmake_root(alloc,(char*) row->data[3], lengths[3]);
+      field->name=      strmake_root(alloc,(char*) row->data[4], lengths[4]);
+      field->org_name=  strmake_root(alloc,(char*) row->data[5], lengths[5]);
 
       field->catalog_length=	lengths[0];
       field->db_length=		lengths[1];
-- 
MySQL Code Commits Mailing List
For list archives: 
http://lists.mysql.com/commits
To unsubscribe:    
http://lists.mysql.com/commits?unsub=lists@pantek.com
Received on Fri Jul 20 07:43:07 2007
Do you need help?X

This archive was generated by hypermail 2.1.8 : Thu Aug 09 2007 - 19:09:53 EDT


Contact Us  Legal Notices  Order Services Online 
Pantek Home  Privacy Policy  IT news  Site Map  Pantek Library