SOURCES: mysql-bug-16470.patch (NEW) - commit 36146

glen glen at pld-linux.org
Wed Oct 24 11:49:06 CEST 2007


Author: glen                         Date: Wed Oct 24 09:49:06 2007 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- commit 36146

---- Files affected:
SOURCES:
   mysql-bug-16470.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/mysql-bug-16470.patch
diff -u /dev/null SOURCES/mysql-bug-16470.patch:1.1
--- /dev/null	Wed Oct 24 11:49:06 2007
+++ SOURCES/mysql-bug-16470.patch	Wed Oct 24 11:49:00 2007
@@ -0,0 +1,59 @@
+From: kpettersson
+Date: October 23 2007 4:07pm
+Subject: bk commit into 5.0 tree (thek:1.2537) BUG#16470
+
+Below is the list of changes that have just been committed into a local
+5.0 repository of thek. When thek 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 at stripped, 2007-10-23 16:07:32+02:00, thek at adventure.(none) +1 -0
+  Bug #16470 crash on grant if old grant tables
+  
+  If a user upgraded the server without running mysql_upgrade, and later tried
+  to run a GRANT command on grant tables like tables_priv, the server would
+  crash.
+  
+  This patch fixes this problem by checking if the grant tables were properly
+  initialized before attempt to store any new grants.
+
+  sql/sql_acl.cc at stripped, 2007-10-23 16:07:31+02:00, thek at adventure.(none) +9 -3
+    If grant_reload fails, don't try to store new GRANTs because the grant tables
+    weren't properly initialized.
+
+diff -Nrup a/sql/sql_acl.cc b/sql/sql_acl.cc
+--- a/sql/sql_acl.cc	2007-06-20 14:24:27 +02:00
++++ b/sql/sql_acl.cc	2007-10-23 16:07:31 +02:00
+@@ -2786,7 +2786,12 @@ bool mysql_table_grant(THD *thd, TABLE_L
+                MYF(0));
+     DBUG_RETURN(TRUE);
+   }
+-
++  if (!grant_option)
++  {
++    my_message(ER_TABLE_NEEDS_UPGRADE, ER(ER_ILLEGAL_GRANT_FOR_TABLE),
++                MYF(0));
++    DBUG_RETURN(TRUE);
++  }
+   if (!revoke_grant)
+   {
+     if (columns.elements)
+@@ -3335,13 +3340,14 @@ my_bool grant_init()
+     DBUG_RETURN(1);				/* purecov: deadcode */
+   thd->thread_stack= (char*) &thd;
+   thd->store_globals();
+-  return_val=  grant_reload(thd);
++  if (grant_reload(thd))
++    return TRUE;
+   delete thd;
+   /* Remember that we don't have a THD */
+   my_pthread_setspecific_ptr(THR_THD,  0);
+   /* Set the grant option flag so we will check grants */
+   grant_option= TRUE;
+-  DBUG_RETURN(return_val);
++  DBUG_RETURN(FALSE);
+ }
+ 
+ 
================================================================


More information about the pld-cvs-commit mailing list