diff options
author | Sergei Golubchik <serg@mariadb.org> | 2016-03-21 11:54:45 +0100 |
---|---|---|
committer | Sergei Golubchik <serg@mariadb.org> | 2016-03-21 11:54:45 +0100 |
commit | 98ea8062075f027561488bf0f6c6e3aaf217249e (patch) | |
tree | 79d66dc1069035013222bea9cb5ada925291b522 | |
parent | b9e571882b3801f53d30bb77155743af39c1b719 (diff) | |
parent | 11b77e9b18a8d97063b4c4a96e40bf9c75bd0e8b (diff) | |
download | mariadb-git-98ea8062075f027561488bf0f6c6e3aaf217249e.tar.gz |
Merge branch '5.5' into 10.0
-rw-r--r-- | client/mysqlcheck.c | 1 | ||||
-rw-r--r-- | mysql-test/r/events_2.result | 4 | ||||
-rw-r--r-- | mysql-test/suite/sys_vars/t/secure_file_priv.test | 40 | ||||
-rw-r--r-- | mysql-test/t/events_2.test | 2 | ||||
-rw-r--r-- | mysys/lf_alloc-pin.c | 9 | ||||
-rw-r--r-- | sql/gcalc_slicescan.h | 2 |
6 files changed, 43 insertions, 15 deletions
diff --git a/client/mysqlcheck.c b/client/mysqlcheck.c index 3b08c892288..3b374f3975e 100644 --- a/client/mysqlcheck.c +++ b/client/mysqlcheck.c @@ -523,7 +523,6 @@ static int is_view(const char *table) { fprintf(stderr, "Failed to %s\n", query); fprintf(stderr, "Error: %s\n", mysql_error(sock)); - my_free(query); DBUG_RETURN(-1); } res= mysql_store_result(sock); diff --git a/mysql-test/r/events_2.result b/mysql-test/r/events_2.result index 3b7f3566cab..06075b0e66e 100644 --- a/mysql-test/r/events_2.result +++ b/mysql-test/r/events_2.result @@ -1,10 +1,10 @@ drop database if exists events_test; create database events_test; use events_test; -create event e_26 on schedule at '2017-01-01 00:00:00' disable do set @a = 5; +create event e_26 on schedule at '2027-01-01 00:00:00' disable do set @a = 5; select db, name, body, definer, convert_tz(execute_at, 'UTC', 'SYSTEM'), on_completion from mysql.event; db name body definer convert_tz(execute_at, 'UTC', 'SYSTEM') on_completion -events_test e_26 set @a = 5 root@localhost 2017-01-01 00:00:00 DROP +events_test e_26 set @a = 5 root@localhost 2027-01-01 00:00:00 DROP drop event e_26; create event e_26 on schedule at NULL disable do set @a = 5; ERROR HY000: Incorrect AT value: 'NULL' diff --git a/mysql-test/suite/sys_vars/t/secure_file_priv.test b/mysql-test/suite/sys_vars/t/secure_file_priv.test index 3e2a4fa467a..5c53da58275 100644 --- a/mysql-test/suite/sys_vars/t/secure_file_priv.test +++ b/mysql-test/suite/sys_vars/t/secure_file_priv.test @@ -5,17 +5,39 @@ CREATE TABLE t1 (c1 VARCHAR(50)); INSERT INTO t1 VALUES ("one"),("two"),("three"),("four"),("five"); SHOW VARIABLES LIKE 'secure_file_priv'; --disable_query_log + # Atempt to create a file where we normally aren't allowed to create one. +# # Doing this in a portable manner is difficult but we should be able to -# count on the depth of the directory hierarchy used. Three steps up from -# the datadir is the 'mysql_test' directory. ---let $PROTECTED_FILE=`SELECT concat(@@datadir,'/../../../bug50373.txt')` ---eval SELECT * FROM t1 INTO OUTFILE '$PROTECTED_FILE'; -DELETE FROM t1; ---eval LOAD DATA INFILE '$PROTECTED_FILE' INTO TABLE t1; -SELECT * FROM t1; ---eval SELECT load_file('$PROTECTED_FILE') AS loaded_file; +# count on the directory hierarchy used. A step up from MYSQLTEST_VARDIR +# should definitely lead us to a "protected" directory, +# but at the same time should still be writable since MTR was able +# to create the vardir itself there. +# If we run tests normally, it will be mysql-test directory. +# If we run tests with --mem, it will be /dev/shm. +# If we run tests with --parallel, it will be mysql-test/var +# (because MYSQLTEST_VARDIR in this case is mysql-test/var/N). + +--perl +use File::Basename; +my $protected_file= dirname($ENV{MYSQLTEST_VARDIR}).'/bug50373.txt'; +open(FILE, ">", "$ENV{MYSQL_TMP_DIR}/bug50373.inc") or die; +print FILE "SELECT * FROM t1 INTO OUTFILE '".$protected_file."';\n"; +print FILE "DELETE FROM t1;\n"; +print FILE "LOAD DATA INFILE '".$protected_file."' INTO TABLE t1;\n"; +print FILE "SELECT * FROM t1;\n"; +print FILE "SELECT load_file('",$protected_file,"') AS loaded_file;\n"; +close(FILE); +EOF + +--source $MYSQL_TMP_DIR/bug50373.inc +--remove_file $MYSQL_TMP_DIR/bug50373.inc --enable_query_log -remove_file $PROTECTED_FILE; + DROP TABLE t1; +--perl +use File::Basename; +unlink dirname($ENV{MYSQLTEST_VARDIR}).'/bug50373.txt'; +EOF + diff --git a/mysql-test/t/events_2.test b/mysql-test/t/events_2.test index 3d609654b21..48949d5630b 100644 --- a/mysql-test/t/events_2.test +++ b/mysql-test/t/events_2.test @@ -13,7 +13,7 @@ use events_test; # mysql.event intact checking end # -create event e_26 on schedule at '2017-01-01 00:00:00' disable do set @a = 5; +create event e_26 on schedule at '2027-01-01 00:00:00' disable do set @a = 5; select db, name, body, definer, convert_tz(execute_at, 'UTC', 'SYSTEM'), on_completion from mysql.event; drop event e_26; --error ER_WRONG_VALUE diff --git a/mysys/lf_alloc-pin.c b/mysys/lf_alloc-pin.c index b599b455ff5..282433ea48d 100644 --- a/mysys/lf_alloc-pin.c +++ b/mysys/lf_alloc-pin.c @@ -103,6 +103,12 @@ #include <my_sys.h> #include <lf.h> +/* + when using alloca() leave at least that many bytes of the stack - + for functions we might be calling from within this stack frame +*/ +#define ALLOCA_SAFETY_MARGIN 8192 + #define LF_PINBOX_MAX_PINS 65536 static void _lf_pinbox_real_free(LF_PINS *pins); @@ -349,7 +355,8 @@ static void _lf_pinbox_real_free(LF_PINS *pins) { int alloca_size= sizeof(void *)*LF_PINBOX_PINS*npins; /* create a sorted list of pinned addresses, to speed up searches */ - if (available_stack_size(&pinbox, *pins->stack_ends_here) > alloca_size) + if (available_stack_size(&pinbox, *pins->stack_ends_here) > + alloca_size + ALLOCA_SAFETY_MARGIN) { struct st_harvester hv; addr= (void **) alloca(alloca_size); diff --git a/sql/gcalc_slicescan.h b/sql/gcalc_slicescan.h index 5a0399bc8da..4996287ca88 100644 --- a/sql/gcalc_slicescan.h +++ b/sql/gcalc_slicescan.h @@ -26,7 +26,7 @@ #ifndef GCALC_DBUG_OFF #define GCALC_DBUG_PRINT(b) DBUG_PRINT("Gcalc", b) -#define GCALC_DBUG_ENTER(a) DBUG_ENTER("Gcalc "a) +#define GCALC_DBUG_ENTER(a) DBUG_ENTER("Gcalc " a) #define GCALC_DBUG_RETURN(r) DBUG_RETURN(r) #define GCALC_DBUG_VOID_RETURN DBUG_VOID_RETURN #define GCALC_DBUG_ASSERT(r) DBUG_ASSERT(r) |