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
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
f65b42dc
Commit
f65b42dc
authored
Apr 04, 2007
by
holyfoot/hf@hfmain.(none)
Browse files
Options
Browse Files
Download
Plain Diff
Merge mysql.com:/home/hf/work/23675/my51-23675
into mysql.com:/home/hf/work/my_mrg/my51-my_mrg
parents
8c18c3ea
f55ab9ef
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
63 additions
and
16 deletions
+63
-16
mysql-test/r/partition_grant.result
mysql-test/r/partition_grant.result
+10
-1
mysql-test/t/partition_grant.test
mysql-test/t/partition_grant.test
+23
-1
sql/mysql_priv.h
sql/mysql_priv.h
+1
-1
sql/partition_info.cc
sql/partition_info.cc
+19
-7
sql/share/errmsg.txt
sql/share/errmsg.txt
+2
-0
sql/sql_base.cc
sql/sql_base.cc
+1
-1
sql/sql_parse.cc
sql/sql_parse.cc
+7
-5
No files found.
mysql-test/r/partition_grant.result
View file @
f65b42dc
...
...
@@ -19,7 +19,16 @@ revoke alter on mysqltest_1.* from mysqltest_1@localhost;
alter table t1 drop partition p3;
ERROR 42000: ALTER command denied to user 'mysqltest_1'@'localhost' for table 't1'
revoke select,alter,drop on mysqltest_1.* from mysqltest_1@localhost;
drop user mysqltest_1@localhost;
drop table t1;
create table t1 (s1 int);
insert into t1 values (1);
grant alter on mysqltest_1.* to mysqltest_1@localhost;
alter table t1 partition by list (s1) (partition p1 values in (2));
ERROR HY000: Table has no partition for some existing values
grant select, alter on mysqltest_1.* to mysqltest_1@localhost;
alter table t1 partition by list (s1) (partition p1 values in (2));
ERROR HY000: Table has no partition for value 1
drop table t1;
drop user mysqltest_1@localhost;
drop schema mysqltest_1;
End of 5.1 tests
mysql-test/t/partition_grant.test
View file @
f65b42dc
...
...
@@ -52,8 +52,30 @@ disconnect conn3;
connection
default
;
revoke
select
,
alter
,
drop
on
mysqltest_1
.*
from
mysqltest_1
@
localhost
;
drop
user
mysqltest_1
@
localhost
;
drop
table
t1
;
#
# Bug #23675 Partitions: possible security breach via alter
#
create
table
t1
(
s1
int
);
insert
into
t1
values
(
1
);
grant
alter
on
mysqltest_1
.*
to
mysqltest_1
@
localhost
;
connect
(
conn4
,
localhost
,
mysqltest_1
,,
mysqltest_1
);
connection
conn4
;
--
error
1514
alter
table
t1
partition
by
list
(
s1
)
(
partition
p1
values
in
(
2
));
connection
default
;
grant
select
,
alter
on
mysqltest_1
.*
to
mysqltest_1
@
localhost
;
disconnect
conn4
;
connect
(
conn5
,
localhost
,
mysqltest_1
,,
mysqltest_1
);
--
error
1514
alter
table
t1
partition
by
list
(
s1
)
(
partition
p1
values
in
(
2
));
disconnect
conn5
;
connection
default
;
drop
table
t1
;
drop
user
mysqltest_1
@
localhost
;
drop
schema
mysqltest_1
;
--
echo
End
of
5.1
tests
sql/mysql_priv.h
View file @
f65b42dc
...
...
@@ -599,7 +599,7 @@ class THD;
void
close_thread_tables
(
THD
*
thd
,
bool
locked
=
0
,
bool
skip_derived
=
0
);
bool
check_one_table_access
(
THD
*
thd
,
ulong
privilege
,
TABLE_LIST
*
tables
);
bool
check_single_table_access
(
THD
*
thd
,
ulong
privilege
,
TABLE_LIST
*
tables
);
TABLE_LIST
*
tables
,
bool
no_errors
);
bool
check_routine_access
(
THD
*
thd
,
ulong
want_access
,
char
*
db
,
char
*
name
,
bool
is_proc
,
bool
no_errors
);
bool
check_some_access
(
THD
*
thd
,
ulong
want_access
,
TABLE_LIST
*
table
);
...
...
sql/partition_info.cc
View file @
f65b42dc
...
...
@@ -849,15 +849,27 @@ void partition_info::print_no_partition_found(TABLE *table)
{
char
buf
[
100
];
char
*
buf_ptr
=
(
char
*
)
&
buf
;
my_bitmap_map
*
old_map
=
dbug_tmp_use_all_columns
(
table
,
table
->
read_set
)
;
TABLE_LIST
table_list
;
if
(
part_expr
->
null_value
)
buf_ptr
=
(
char
*
)
"NULL"
;
bzero
(
&
table_list
,
sizeof
(
table_list
));
table_list
.
db
=
table
->
s
->
db
.
str
;
table_list
.
table_name
=
table
->
s
->
table_name
.
str
;
if
(
check_single_table_access
(
current_thd
,
SELECT_ACL
,
&
table_list
,
TRUE
))
my_message
(
ER_NO_PARTITION_FOR_GIVEN_VALUE
,
ER
(
ER_NO_PARTITION_FOR_GIVEN_VALUE_SILENT
),
MYF
(
0
));
else
longlong2str
(
err_value
,
buf
,
part_expr
->
unsigned_flag
?
10
:
-
10
);
my_error
(
ER_NO_PARTITION_FOR_GIVEN_VALUE
,
MYF
(
0
),
buf_ptr
);
dbug_tmp_restore_column_map
(
table
->
read_set
,
old_map
);
{
my_bitmap_map
*
old_map
=
dbug_tmp_use_all_columns
(
table
,
table
->
read_set
);
if
(
part_expr
->
null_value
)
buf_ptr
=
(
char
*
)
"NULL"
;
else
longlong2str
(
err_value
,
buf
,
part_expr
->
unsigned_flag
?
10
:
-
10
);
my_error
(
ER_NO_PARTITION_FOR_GIVEN_VALUE
,
MYF
(
0
),
buf_ptr
);
dbug_tmp_restore_column_map
(
table
->
read_set
,
old_map
);
}
}
/*
Set up buffers and arrays for fields requiring preparation
...
...
sql/share/errmsg.txt
View file @
f65b42dc
...
...
@@ -6057,3 +6057,5 @@ ER_EVENT_CANNOT_ALTER_IN_THE_PAST
eng "Event execution time is in the past and ON COMPLETION NOT PRESERVE is set. Event has not been altered"
ER_SLAVE_INCIDENT
eng "The incident %s occured on the master. Message: %-.64s"
ER_NO_PARTITION_FOR_GIVEN_VALUE_SILENT
eng "Table has no partition for some existing values"
sql/sql_base.cc
View file @
f65b42dc
...
...
@@ -5852,7 +5852,7 @@ bool setup_tables_and_check_access(THD *thd,
{
if
(
leaves_tmp
->
belong_to_view
&&
check_single_table_access
(
thd
,
first_table
?
want_access_first
:
want_access
,
leaves_tmp
))
want_access
,
leaves_tmp
,
FALSE
))
{
tables
->
hide_view_error
(
thd
);
return
TRUE
;
...
...
sql/sql_parse.cc
View file @
f65b42dc
...
...
@@ -4452,6 +4452,8 @@ static bool execute_sqlcom_select(THD *thd, TABLE_LIST *all_tables)
thd Thread handler
privilege requested privilege
all_tables global table list of query
no_errors FALSE/TRUE - report/don't report error to
the client (using my_error() call).
RETURN
0 - OK
...
...
@@ -4459,7 +4461,7 @@ static bool execute_sqlcom_select(THD *thd, TABLE_LIST *all_tables)
*/
bool
check_single_table_access
(
THD
*
thd
,
ulong
privilege
,
TABLE_LIST
*
all_tables
)
TABLE_LIST
*
all_tables
,
bool
no_errors
)
{
Security_context
*
backup_ctx
=
thd
->
security_ctx
;
...
...
@@ -4475,12 +4477,12 @@ bool check_single_table_access(THD *thd, ulong privilege,
db_name
=
all_tables
->
db
;
if
(
check_access
(
thd
,
privilege
,
db_name
,
&
all_tables
->
grant
.
privilege
,
0
,
0
,
&
all_tables
->
grant
.
privilege
,
0
,
no_errors
,
test
(
all_tables
->
schema_table
)))
goto
deny
;
/* Show only 1 table for check_grant */
if
(
grant_option
&&
check_grant
(
thd
,
privilege
,
all_tables
,
0
,
1
,
0
))
if
(
grant_option
&&
check_grant
(
thd
,
privilege
,
all_tables
,
0
,
1
,
no_errors
))
goto
deny
;
thd
->
security_ctx
=
backup_ctx
;
...
...
@@ -4508,7 +4510,7 @@ bool check_single_table_access(THD *thd, ulong privilege,
bool
check_one_table_access
(
THD
*
thd
,
ulong
privilege
,
TABLE_LIST
*
all_tables
)
{
if
(
check_single_table_access
(
thd
,
privilege
,
all_tables
))
if
(
check_single_table_access
(
thd
,
privilege
,
all_tables
,
FALSE
))
return
1
;
/* Check rights on tables of subselects and implictly opened tables */
...
...
@@ -4521,7 +4523,7 @@ bool check_one_table_access(THD *thd, ulong privilege, TABLE_LIST *all_tables)
*/
if
(
view
&&
subselects_tables
->
belong_to_view
==
view
)
{
if
(
check_single_table_access
(
thd
,
privilege
,
subselects_tables
))
if
(
check_single_table_access
(
thd
,
privilege
,
subselects_tables
,
FALSE
))
return
1
;
subselects_tables
=
subselects_tables
->
next_global
;
}
...
...
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