From 7c46c0d020e0bdcd3b427e2e7e058c6fefa643e0 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 24 Sep 2004 17:55:43 +0400 Subject: [PATCH 1/2] For now we will require super privilege for creating/dropping trigger because proper privilege checking is not in place yet. --- sql/sql_trigger.cc | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/sql/sql_trigger.cc b/sql/sql_trigger.cc index c376e86f18c..add4078ce8e 100644 --- a/sql/sql_trigger.cc +++ b/sql/sql_trigger.cc @@ -2,6 +2,7 @@ #include "sp_head.h" #include "sql_trigger.h" #include "parse_file.h" +#include "sql_acl.h" static const LEX_STRING triggers_file_type= {(char *)"TRIGGERS", 8}; @@ -54,7 +55,13 @@ int mysql_create_or_drop_trigger(THD *thd, TABLE_LIST *tables, bool create) if (open_and_lock_tables(thd, tables)) DBUG_RETURN(-1); - // TODO: We should check if user has TRIGGER privilege for table here. + /* + TODO: We should check if user has TRIGGER privilege for table here. + Now we just require SUPER privilege for creating/dropping because + we don't have proper privilege checking for triggers in place yet. + */ + if (check_global_access(thd, SUPER_ACL)) + DBUG_RETURN(1); table= tables->table; From 4ecf51112a1b49c28717908d556774f7100067ca Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 24 Sep 2004 18:25:06 +0200 Subject: [PATCH 2/2] In binary log events, flags are 2 bytes, not 4. Using 4 resulted in buffer overflow (and on a certain build it resulted in overwriting another part of the event without crashing :( ). sql/log_event.cc: flags are 2 bytes, not 4. Using 4 resulted in buffer overflow (and on a certain build it resulted in overwriting another part of the event without crashing :( ). --- sql/log_event.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sql/log_event.cc b/sql/log_event.cc index 0e130158919..01dcb2af21c 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -571,7 +571,7 @@ bool Log_event::write_header(IO_CACHE* file, ulong event_data_length) int4store(header+ SERVER_ID_OFFSET, server_id); int4store(header+ EVENT_LEN_OFFSET, data_written); int4store(header+ LOG_POS_OFFSET, log_pos); - int4store(header+ FLAGS_OFFSET, flags); + int2store(header+ FLAGS_OFFSET, flags); DBUG_RETURN(my_b_safe_write(file, header, sizeof(header)) != 0); }