mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Merge with 4.1.3-beta
This commit is contained in:
@ -629,10 +629,10 @@ int acl_getroot(THD *thd, USER_RESOURCES *mqh,
|
||||
if (passwd_len == acl_user_tmp->salt_len)
|
||||
{
|
||||
if (acl_user_tmp->salt_len == 0 ||
|
||||
acl_user_tmp->salt_len == SCRAMBLE_LENGTH &&
|
||||
check_scramble(passwd, thd->scramble, acl_user_tmp->salt) == 0 ||
|
||||
(acl_user_tmp->salt_len == SCRAMBLE_LENGTH ?
|
||||
check_scramble(passwd, thd->scramble, acl_user_tmp->salt) :
|
||||
check_scramble_323(passwd, thd->scramble,
|
||||
(ulong *) acl_user_tmp->salt) == 0)
|
||||
(ulong *) acl_user_tmp->salt)) == 0)
|
||||
{
|
||||
acl_user= acl_user_tmp;
|
||||
res= 0;
|
||||
@ -1021,7 +1021,7 @@ static void acl_insert_db(const char *user, const char *host, const char *db,
|
||||
*/
|
||||
|
||||
ulong acl_get(const char *host, const char *ip,
|
||||
const char *user, const char *db, my_bool db_is_pattern)
|
||||
const char *user, const char *db, my_bool db_is_pattern)
|
||||
{
|
||||
ulong host_access,db_access;
|
||||
uint i,key_length;
|
||||
@ -1507,8 +1507,7 @@ static int replace_user_table(THD *thd, TABLE *table, const LEX_USER &combo,
|
||||
|
||||
table->field[0]->store(combo.host.str,combo.host.length, &my_charset_latin1);
|
||||
table->field[1]->store(combo.user.str,combo.user.length, &my_charset_latin1);
|
||||
table->file->index_init(0);
|
||||
if (table->file->index_read(table->record[0],
|
||||
if (table->file->index_read_idx(table->record[0], 0,
|
||||
(byte*) table->field[0]->ptr,0,
|
||||
HA_READ_KEY_EXACT))
|
||||
{
|
||||
@ -1519,7 +1518,6 @@ static int replace_user_table(THD *thd, TABLE *table, const LEX_USER &combo,
|
||||
else
|
||||
my_error(ER_NO_PERMISSION_TO_CREATE_USER, MYF(0),
|
||||
thd->user, thd->host_or_ip);
|
||||
error= -1;
|
||||
goto end;
|
||||
}
|
||||
old_row_exists = 0;
|
||||
@ -1656,7 +1654,6 @@ end:
|
||||
&thd->lex->mqh,
|
||||
rights);
|
||||
}
|
||||
table->file->index_end();
|
||||
DBUG_RETURN(error);
|
||||
}
|
||||
|
||||
@ -1692,8 +1689,7 @@ static int replace_db_table(TABLE *table, const char *db,
|
||||
table->field[0]->store(combo.host.str,combo.host.length, &my_charset_latin1);
|
||||
table->field[1]->store(db,(uint) strlen(db), &my_charset_latin1);
|
||||
table->field[2]->store(combo.user.str,combo.user.length, &my_charset_latin1);
|
||||
table->file->index_init(0);
|
||||
if (table->file->index_read(table->record[0],(byte*) table->field[0]->ptr,0,
|
||||
if (table->file->index_read_idx(table->record[0],0,(byte*) table->field[0]->ptr,0,
|
||||
HA_READ_KEY_EXACT))
|
||||
{
|
||||
if (what == 'N')
|
||||
@ -1747,13 +1743,11 @@ static int replace_db_table(TABLE *table, const char *db,
|
||||
acl_update_db(combo.user.str,combo.host.str,db,rights);
|
||||
else
|
||||
acl_insert_db(combo.user.str,combo.host.str,db,rights);
|
||||
table->file->index_end();
|
||||
DBUG_RETURN(0);
|
||||
|
||||
/* This could only happen if the grant tables got corrupted */
|
||||
table_error:
|
||||
table->file->print_error(error,MYF(0)); /* purecov: deadcode */
|
||||
table->file->index_end();
|
||||
|
||||
abort:
|
||||
DBUG_RETURN(-1);
|
||||
@ -1875,8 +1869,7 @@ GRANT_TABLE::GRANT_TABLE(TABLE *form, TABLE *col_privs)
|
||||
col_privs->field[3]->pack_length());
|
||||
key_copy(key,col_privs,0,key_len);
|
||||
col_privs->field[4]->store("",0, &my_charset_latin1);
|
||||
col_privs->file->index_init(0);
|
||||
if (col_privs->file->index_read(col_privs->record[0],
|
||||
if (col_privs->file->index_read_idx(col_privs->record[0],0,
|
||||
(byte*) col_privs->field[0]->ptr,
|
||||
key_len, HA_READ_KEY_EXACT))
|
||||
{
|
||||
@ -1991,7 +1984,7 @@ static int replace_column_table(GRANT_TABLE *g_t,
|
||||
|
||||
List_iterator <LEX_COLUMN> iter(columns);
|
||||
class LEX_COLUMN *xx;
|
||||
table->file->index_init(0);
|
||||
table->file->ha_index_init(0);
|
||||
while ((xx=iter++))
|
||||
{
|
||||
ulong privileges = xx->rights;
|
||||
@ -2061,7 +2054,6 @@ static int replace_column_table(GRANT_TABLE *g_t,
|
||||
my_hash_insert(&g_t->hash_columns,(byte*) grant_column);
|
||||
}
|
||||
}
|
||||
table->file->index_end();
|
||||
|
||||
/*
|
||||
If revoke of privileges on the table level, remove all such privileges
|
||||
@ -2070,7 +2062,6 @@ static int replace_column_table(GRANT_TABLE *g_t,
|
||||
|
||||
if (revoke_grant)
|
||||
{
|
||||
table->file->index_init(0);
|
||||
if (table->file->index_read(table->record[0], (byte*) table->field[0]->ptr,
|
||||
key_length, HA_READ_KEY_EXACT))
|
||||
goto end;
|
||||
@ -2126,7 +2117,7 @@ static int replace_column_table(GRANT_TABLE *g_t,
|
||||
}
|
||||
|
||||
end:
|
||||
table->file->index_end();
|
||||
table->file->ha_index_end();
|
||||
DBUG_RETURN(result);
|
||||
}
|
||||
|
||||
@ -2639,15 +2630,13 @@ my_bool grant_init(THD *org_thd)
|
||||
goto end;
|
||||
|
||||
t_table = tables[0].table; c_table = tables[1].table;
|
||||
t_table->file->index_init(0);
|
||||
t_table->file->ha_index_init(0);
|
||||
if (t_table->file->index_first(t_table->record[0]))
|
||||
{
|
||||
t_table->file->index_end();
|
||||
return_val= 0;
|
||||
goto end_unlock;
|
||||
}
|
||||
grant_option= TRUE;
|
||||
t_table->file->index_end();
|
||||
|
||||
/* Will be restored by org_thd->store_globals() */
|
||||
my_pthread_setspecific_ptr(THR_MALLOC,&memex);
|
||||
@ -2667,7 +2656,7 @@ my_bool grant_init(THD *org_thd)
|
||||
{
|
||||
sql_print_error("Warning: 'tables_priv' entry '%s %s@%s' "
|
||||
"ignored in --skip-name-resolve mode.",
|
||||
mem_check->tname, mem_check->user,
|
||||
mem_check->tname, mem_check->user,
|
||||
mem_check->host, mem_check->host);
|
||||
continue;
|
||||
}
|
||||
@ -2684,6 +2673,7 @@ my_bool grant_init(THD *org_thd)
|
||||
return_val=0; // Return ok
|
||||
|
||||
end_unlock:
|
||||
t_table->file->ha_index_end();
|
||||
mysql_unlock_tables(thd, lock);
|
||||
thd->version--; // Force close to free memory
|
||||
|
||||
@ -2909,7 +2899,7 @@ bool check_grant_all_columns(THD *thd, ulong want_access, TABLE *table)
|
||||
if (table->grant.version != grant_version)
|
||||
{
|
||||
table->grant.grant_table=
|
||||
table_hash_search(thd->host,thd->ip,thd->db,
|
||||
table_hash_search(thd->host, thd->ip, table->table_cache_key,
|
||||
thd->priv_user,
|
||||
table->real_name,0); /* purecov: inspected */
|
||||
table->grant.version=grant_version; /* purecov: inspected */
|
||||
@ -3022,7 +3012,7 @@ ulong get_column_grant(THD *thd, TABLE_LIST *table, Field *field)
|
||||
if (table->grant.version != grant_version)
|
||||
{
|
||||
table->grant.grant_table=
|
||||
table_hash_search(thd->host,thd->ip,thd->db,
|
||||
table_hash_search(thd->host, thd->ip, table->db,
|
||||
thd->priv_user,
|
||||
table->real_name,0); /* purecov: inspected */
|
||||
table->grant.version=grant_version; /* purecov: inspected */
|
||||
@ -3627,12 +3617,10 @@ int mysql_drop_user(THD *thd, List <LEX_USER> &list)
|
||||
record[0])))
|
||||
{
|
||||
tables[0].table->file->print_error(error, MYF(0));
|
||||
tables[0].table->file->index_end();
|
||||
DBUG_RETURN(-1);
|
||||
}
|
||||
delete_dynamic_element(&acl_users, acl_userd);
|
||||
}
|
||||
tables[0].table->file->index_end();
|
||||
}
|
||||
|
||||
VOID(pthread_mutex_unlock(&acl_cache->lock));
|
||||
|
Reference in New Issue
Block a user