]> git.pld-linux.org Git - packages/mysql.git/blob - mysql-bug-16470.patch
- expire-logs-days sample
[packages/mysql.git] / mysql-bug-16470.patch
1 From: kpettersson
2 Date: October 24 2007 10:29am
3 Subject: bk commit into 5.0 tree (thek:1.2537) BUG#16470
4
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
11
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
14   
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
17   crash.
18   
19   This patch fixes this problem by checking if the grant tables were properly
20   initialized before attempt to store any new grants.
21
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.
25
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 */
32    }
33 -  if (rights & ~TABLE_ACLS)
34 +  if ((rights & ~TABLE_ACLS) || !grant_option)
35    {
36      my_message(ER_ILLEGAL_GRANT_FOR_TABLE, ER(ER_ILLEGAL_GRANT_FOR_TABLE),
37                 MYF(0));
38 @@ -3328,20 +3328,17 @@ void  grant_free(void)
39  my_bool grant_init()
40  {
41    THD  *thd;
42 -  my_bool return_val;
43    DBUG_ENTER("grant_init");
44  
45    if (!(thd= new THD))
46      DBUG_RETURN(1);                            /* purecov: deadcode */
47    thd->thread_stack= (char*) &thd;
48    thd->store_globals();
49 -  return_val=  grant_reload(thd);
50 +  grant_option= !grant_reload(thd);
51    delete 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 */
55 -  grant_option= TRUE;
56 -  DBUG_RETURN(return_val);
57 +  DBUG_RETURN(!grant_option);
58  }
59  
60  
This page took 0.061288 seconds and 3 git commands to generate.