2 Date: October 24 2007 10:29am
3 Subject: bk commit into 5.0 tree (thek:1.2537) BUG#16470
5 Below is the list of changes that have just been committed into a local
6 5.0 repository of thek. When thek does a push these changes will
7 be propagated to the main repository and, within 24 hours after the
8 push, to the public repository.
9 For information on how to access the public repository
10 see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
12 ChangeSet@stripped, 2007-10-24 10:29:24+02:00, thek@adventure.(none) +1 -0
13 Bug #16470 crash on grant if old grant tables
15 If a user upgraded the server without running mysql_upgrade, and later tried
16 to run a GRANT command on grant tables like tables_priv, the server would
19 This patch fixes this problem by checking if the grant tables were properly
20 initialized before attempt to store any new grants.
22 sql/sql_acl.cc@stripped, 2007-10-24 10:29:21+02:00, thek@adventure.(none) +3 -6
23 If grant_reload fails, don't try to store new GRANTs because the grant tables
24 weren't properly initialized.
26 diff -Nrup a/sql/sql_acl.cc b/sql/sql_acl.cc
27 --- a/sql/sql_acl.cc 2007-06-20 14:24:27 +02:00
28 +++ b/sql/sql_acl.cc 2007-10-24 10:29:21 +02:00
29 @@ -2780,7 +2780,7 @@ bool mysql_table_grant(THD *thd, TABLE_L
30 "--skip-grant-tables"); /* purecov: inspected */
31 DBUG_RETURN(TRUE); /* purecov: inspected */
33 - if (rights & ~TABLE_ACLS)
34 + if ((rights & ~TABLE_ACLS) || !grant_option)
36 my_message(ER_ILLEGAL_GRANT_FOR_TABLE, ER(ER_ILLEGAL_GRANT_FOR_TABLE),
38 @@ -3328,20 +3328,17 @@ void grant_free(void)
43 DBUG_ENTER("grant_init");
46 DBUG_RETURN(1); /* purecov: deadcode */
47 thd->thread_stack= (char*) &thd;
49 - return_val= grant_reload(thd);
50 + grant_option= !grant_reload(thd);
52 /* Remember that we don't have a THD */
53 my_pthread_setspecific_ptr(THR_THD, 0);
54 - /* Set the grant option flag so we will check grants */
56 - DBUG_RETURN(return_val);
57 + DBUG_RETURN(!grant_option);