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
e1d58153
Commit
e1d58153
authored
Oct 22, 2004
by
dellis@goetia.(none)
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
sql_acl.cc:
BUG #5831 Post-review changes, merging improvements from Monty.
parent
a4aec769
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
29 additions
and
34 deletions
+29
-34
sql/sql_acl.cc
sql/sql_acl.cc
+29
-34
No files found.
sql/sql_acl.cc
View file @
e1d58153
...
...
@@ -3590,7 +3590,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
];
...
...
@@ -3628,10 +3628,9 @@ int mysql_revoke_all(THD *thd, List <LEX_USER> &list)
as privileges are removed, removal occurs in a repeated loop
until no more privileges are revoked.
*/
while
(
1
)
do
{
int
revoke
=
0
;
for
(
counter
=
0
;
counter
<
acl_dbs
.
elements
;
)
for
(
counter
=
0
,
revoked
=
0
;
counter
<
acl_dbs
.
elements
;
)
{
const
char
*
user
,
*
host
;
...
...
@@ -3644,25 +3643,25 @@ int mysql_revoke_all(THD *thd, List <LEX_USER> &list)
if
(
!
strcmp
(
lex_user
->
user
.
str
,
user
)
&&
!
my_strcasecmp
(
system_charset_info
,
lex_user
->
host
.
str
,
host
))
{
if
(
replace_db_table
(
tables
[
1
].
table
,
acl_db
->
db
,
*
lex_user
,
~
0
,
1
))
result
=
-
1
;
else
if
(
!
replace_db_table
(
tables
[
1
].
table
,
acl_db
->
db
,
*
lex_user
,
~
0
,
1
))
{
revoke
=
1
;
/*
Don't increment counter as replace_db_table deleted the
current element in acl_dbs.
*/
revoked
=
1
;
continue
;
}
result
=
-
1
;
// Something went wrong
}
++
counter
;
counter
++
;
}
if
(
!
revoke
)
break
;
}
}
while
(
revoked
);
/* Remove column access */
while
(
1
)
do
{
int
revoke
=
0
;
for
(
counter
=
0
;
counter
<
column_priv_hash
.
records
;
)
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
,
...
...
@@ -3679,36 +3678,32 @@ int mysql_revoke_all(THD *thd, List <LEX_USER> &list)
grant_table
->
db
,
grant_table
->
tname
,
~
0
,
0
,
1
))
{
result
=
-
1
;
}
else
{
if
(
grant_table
->
cols
)
if
(
!
grant_table
->
cols
)
{
List
<
LEX_COLUMN
>
columns
;
if
(
replace_column_table
(
grant_table
,
tables
[
3
].
table
,
*
lex_user
,
columns
,
grant_table
->
db
,
grant_table
->
tname
,
~
0
,
1
))
result
=
-
1
;
else
{
revoke
=
1
;
continue
;
}
revoked
=
1
;
continue
;
}
else
List
<
LEX_COLUMN
>
columns
;
if
(
!
replace_column_table
(
grant_table
,
tables
[
3
].
table
,
*
lex_user
,
columns
,
grant_table
->
db
,
grant_table
->
tname
,
~
0
,
1
))
{
revoke
=
1
;
revoke
d
=
1
;
continue
;
}
result
=
-
1
;
}
}
++
counter
;
counter
++
;
}
if
(
!
revoke
)
break
;
}
}
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