Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
6ffd23d6
Commit
6ffd23d6
authored
Oct 22, 2004
by
unknown
Browse files
Options
Browse Files
Download
Plain Diff
Merge dellis@bk-internal.mysql.com:/home/bk/mysql-4.1
into goetia.(none):/home/dellis/mysqlab/bk/mysql-4.1
parents
7275d29e
8f068156
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
71 additions
and
59 deletions
+71
-59
sql/sql_acl.cc
sql/sql_acl.cc
+71
-59
No files found.
sql/sql_acl.cc
View file @
6ffd23d6
...
...
@@ -3591,7 +3591,7 @@ int mysql_drop_user(THD *thd, List <LEX_USER> &list)
int
mysql_revoke_all
(
THD
*
thd
,
List
<
LEX_USER
>
&
list
)
{
uint
counter
;
uint
counter
,
revoked
;
int
result
;
ACL_DB
*
acl_db
;
TABLE_LIST
tables
[
4
];
...
...
@@ -3624,7 +3624,14 @@ int mysql_revoke_all(THD *thd, List <LEX_USER> &list)
}
/* Remove db access privileges */
for
(
counter
=
0
;
counter
<
acl_dbs
.
elements
;
)
/*
Because acl_dbs and column_priv_hash shrink and may re-order
as privileges are removed, removal occurs in a repeated loop
until no more privileges are revoked.
*/
do
{
for
(
counter
=
0
,
revoked
=
0
;
counter
<
acl_dbs
.
elements
;
)
{
const
char
*
user
,
*
host
;
...
...
@@ -3641,20 +3648,24 @@ int mysql_revoke_all(THD *thd, List <LEX_USER> &list)
{
/*
Don't increment counter as replace_db_table deleted the
current element in acl_db's and shifted the higher elements down
current element in acl_dbs.
*/
revoked
=
1
;
continue
;
}
result
=
-
1
;
// Something went wrong
}
counter
++
;
}
}
while
(
revoked
);
/* Remove column access */
for
(
counter
=
0
;
counter
<
column_priv_hash
.
records
;
)
do
{
for
(
counter
=
0
,
revoked
=
0
;
counter
<
column_priv_hash
.
records
;
)
{
const
char
*
user
,
*
host
;
GRANT_TABLE
*
grant_table
=
(
GRANT_TABLE
*
)
hash_element
(
&
column_priv_hash
,
GRANT_TABLE
*
grant_table
=
(
GRANT_TABLE
*
)
hash_element
(
&
column_priv_hash
,
counter
);
if
(
!
(
user
=
grant_table
->
user
))
user
=
""
;
...
...
@@ -3670,28 +3681,29 @@ int mysql_revoke_all(THD *thd, List <LEX_USER> &list)
~
0
,
0
,
1
))
{
result
=
-
1
;
continue
;
}
else
{
if
(
!
grant_table
->
cols
)
{
revoked
=
1
;
continue
;
}
List
<
LEX_COLUMN
>
columns
;
if
(
replace_column_table
(
grant_table
,
tables
[
3
].
table
,
*
lex_user
,
if
(
!
replace_column_table
(
grant_table
,
tables
[
3
].
table
,
*
lex_user
,
columns
,
grant_table
->
db
,
grant_table
->
tname
,
~
0
,
1
))
result
=
-
1
;
/*
Safer to do continue here as replace_table_table changed
column_priv_hash and we want to test the current element
*/
{
revoked
=
1
;
continue
;
}
result
=
-
1
;
}
}
counter
++
;
}
}
while
(
revoked
);
}
VOID
(
pthread_mutex_unlock
(
&
acl_cache
->
lock
));
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment