List:Commits« Previous MessageNext Message »
From:Martin Skold Date:August 28 2006 9:03am
Subject:bk commit into 5.1 tree (mskold:1.2036)
View as plain text  
Below is the list of changes that have just been committed into a local
5.1 repository of marty. When marty 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@stripped, 2006-08-28 11:03:26+02:00, mskold@stripped +4 -0
  buffer overflow and information exposure bugs fixed (reported by Stefano Di Paola), CSC#10360

  sql/ha_ndbcluster.cc@stripped, 2006-08-24 15:00:33+02:00, mskold@stripped +3 -1
    Bug #20993 Print NodeID in MySQL node's logs

  sql/sql_parse.cc@stripped, 2006-08-24 15:56:24+02:00, mskold@stripped +17 -0
    buffer overflow and information exposure bugs fixed (reported by Stefano Di Paola), CSC#10360

  storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp@stripped, 2006-08-25 17:23:08+02:00, mskold@stripped +1 -3
    bug#20904: GCP Stop during GCP_SAVEREQ due to FILE_CHANGE_PROBLEM in zero-page: Reset logpartstate if file_change_problem after writeing of zero page is done

  storage/ndb/src/kernel/blocks/dbtup/DbtupPageMap.cpp@stripped, 2006-08-24 15:08:52+02:00, mskold@stripped +3 -0
    limit the max. size of allocated page chunks (Bug #21137)

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User:	mskold
# Host:	linux.site
# Root:	/windows/Linux_space/MySQL/mysql-5.1-wl2325-5.0

--- 1.481/sql/sql_parse.cc	2006-08-28 11:03:33 +02:00
+++ 1.482/sql/sql_parse.cc	2006-08-28 11:03:33 +02:00
@@ -993,6 +993,13 @@ static int check_connection(THD *thd)
     *passwd++ : strlen(passwd);
   db= thd->client_capabilities & CLIENT_CONNECT_WITH_DB ?
     db + passwd_len + 1 : 0;
+  uint db_len= db ? strlen(db) : 0;
+
+  if (passwd + passwd_len + db_len > (char *)net->read_pos + pkt_len)
+  {
+    inc_host_errors(&thd->remote.sin_addr);
+    return ER_HANDSHAKE_ERROR;
+  }
 
   /* Since 4.1 all database names are stored in utf8 */
   if (db)
@@ -1574,7 +1581,17 @@ bool dispatch_command(enum enum_server_c
   {
     char *db, *tbl_name;
     uint db_len= *(uchar*) packet;
+    if (db_len >= packet_length || db_len > NAME_LEN)
+    {
+      my_message(ER_UNKNOWN_COM_ERROR, ER(ER_UNKNOWN_COM_ERROR), MYF(0));
+      break;
+    }
     uint tbl_len= *(uchar*) (packet + db_len + 1);
+    if (db_len+tbl_len+2 > packet_length || tbl_len > NAME_LEN)
+    {
+      my_message(ER_UNKNOWN_COM_ERROR, ER(ER_UNKNOWN_COM_ERROR), MYF(0));
+      break;
+    }
 
     statistic_increment(thd->status_var.com_other, &LOCK_status);
     thd->enable_slow_log= opt_log_slow_admin_statements;

--- 1.84/storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp	2006-08-28 11:03:33 +02:00
+++ 1.85/storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp	2006-08-28 11:03:34 +02:00
@@ -12554,19 +12554,17 @@ void Dblqh::lastWriteInFileLab(Signal* s
 
 void Dblqh::writePageZeroLab(Signal* signal) 
 {
-  if (false && logPartPtr.p->logPartState == LogPartRecord::FILE_CHANGE_PROBLEM) 
+  if (logPartPtr.p->logPartState == LogPartRecord::FILE_CHANGE_PROBLEM) 
   {
     if (logPartPtr.p->firstLogQueue == RNIL) 
     {
       jam();
       logPartPtr.p->logPartState = LogPartRecord::IDLE;
-      ndbout_c("resetting logPartState to IDLE");
     } 
     else 
     {
       jam();
       logPartPtr.p->logPartState = LogPartRecord::ACTIVE;
-      ndbout_c("resetting logPartState to ACTIVE");
     }
   }
   

--- 1.3/storage/ndb/src/kernel/blocks/dbtup/DbtupPageMap.cpp	2006-08-28 11:03:34 +02:00
+++ 1.4/storage/ndb/src/kernel/blocks/dbtup/DbtupPageMap.cpp	2006-08-28 11:03:34 +02:00
@@ -401,7 +401,10 @@ void Dbtup::allocMoreFragPages(Fragrecor
 /* -----------------------------------------------------------------*/
 // We will grow by 18.75% plus two more additional pages to grow
 // a little bit quicker in the beginning.
+// Once reaching a chunk size of 1024 pages we don't grow beyond
+// that anymore to prevent over-agressive allocation 
 /* -----------------------------------------------------------------*/
+  if (noAllocPages > 1024) noAllocPages = 1024; 
   allocFragPages(regFragPtr, noAllocPages);
 }//Dbtup::allocMoreFragPages()
 

--- 1.247/sql/ha_ndbcluster.cc	2006-08-28 11:03:34 +02:00
+++ 1.248/sql/ha_ndbcluster.cc	2006-08-28 11:03:34 +02:00
@@ -5425,7 +5425,9 @@ bool ndbcluster_init()
     pthread_cond_destroy(&COND_ndb_util_thread);
     goto ndbcluster_init_error;
   }
-  
+
+  sql_print_information("NDB: NodeID is %d", 
+			g_ndb_cluster_connection->node_id());
   ndbcluster_inited= 1;
   DBUG_RETURN(FALSE);
 
Thread
bk commit into 5.1 tree (mskold:1.2036)Martin Skold28 Aug