From d26965c3614b45494f8dda51291c174878c37d58 Mon Sep 17 00:00:00 2001 From: "msvensson@pilot.blaudden" <> Date: Mon, 23 Apr 2007 11:01:22 +0200 Subject: [PATCH 1/7] Protect against killing pid's that would "killall" or "kill self" --- mysql-test/lib/mtr_process.pl | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/mysql-test/lib/mtr_process.pl b/mysql-test/lib/mtr_process.pl index e9e0dcce1b8..ad0fea465d6 100644 --- a/mysql-test/lib/mtr_process.pl +++ b/mysql-test/lib/mtr_process.pl @@ -1086,6 +1086,13 @@ sub mtr_kill_processes ($) { foreach my $pid (@$pids) { + + if ($pid <= 0) + { + mtr_warning("Trying to kill illegal pid: $pid"); + next; + } + foreach my $sig (15, 9) { last if mtr_im_kill_process([ $pid ], $sig, 10, 1); From a23eeb620cc6a39762c7c7d649cb04d79ca13f55 Mon Sep 17 00:00:00 2001 From: "msvensson@pilot.blaudden" <> Date: Mon, 23 Apr 2007 11:41:55 +0200 Subject: [PATCH 2/7] Remove left over file fix_priv_tabs.result --- mysql-test/r/fix_priv_tabs.result | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 mysql-test/r/fix_priv_tabs.result diff --git a/mysql-test/r/fix_priv_tabs.result b/mysql-test/r/fix_priv_tabs.result deleted file mode 100644 index e69de29bb2d..00000000000 From a31fce0a6c7dd0e332de89cb32b0e6301bd42676 Mon Sep 17 00:00:00 2001 From: "msvensson@pilot.blaudden" <> Date: Mon, 23 Apr 2007 11:46:47 +0200 Subject: [PATCH 3/7] Remove left over file abi_check --- include/abi_check | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 include/abi_check diff --git a/include/abi_check b/include/abi_check deleted file mode 100644 index e69de29bb2d..00000000000 From 10181a7fa7826a5537939ca60d9ae20cc93dc4f8 Mon Sep 17 00:00:00 2001 From: "msvensson@pilot.blaudden" <> Date: Mon, 23 Apr 2007 12:02:58 +0200 Subject: [PATCH 4/7] Fix warnings reported by icc --- tests/mysql_client_test.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/mysql_client_test.c b/tests/mysql_client_test.c index d64ec08a71d..ae332edcdd8 100644 --- a/tests/mysql_client_test.c +++ b/tests/mysql_client_test.c @@ -85,7 +85,7 @@ struct my_tests_st if (opt_silent < 2) \ { \ fprintf(stdout, "\n\n#####################################\n"); \ - fprintf(stdout, "%d of (%d/%d): %s", test_count++, iter_count, \ + fprintf(stdout, "%u of (%u/%u): %s", test_count++, iter_count, \ opt_count, str); \ fprintf(stdout, " \n#####################################\n"); \ } @@ -99,7 +99,7 @@ if (!opt_silent) \ static void print_error(const char *msg); static void print_st_error(MYSQL_STMT *stmt, const char *msg); -static void client_disconnect(); +static void client_disconnect(void); /* @@ -118,7 +118,7 @@ static void client_disconnect(); #define DIE(expr) \ die(__FILE__, __LINE__, #expr) -void die(const char *file, int line, const char *expr) +static void die(const char *file, int line, const char *expr) { fflush(stdout); fprintf(stderr, "%s:%d: check failed: '%s'\n", file, line, expr); @@ -252,7 +252,7 @@ static my_bool check_have_innodb(MYSQL *conn) mysql_simple_prepare(): a variant without the 'length' parameter. */ -MYSQL_STMT *STDCALL +static MYSQL_STMT *STDCALL mysql_simple_prepare(MYSQL *mysql_arg, const char *query) { MYSQL_STMT *stmt= mysql_stmt_init(mysql_arg); @@ -467,7 +467,7 @@ static void my_print_result_metadata(MYSQL_RES *result) /* Process the result set */ -int my_process_result_set(MYSQL_RES *result) +static int my_process_result_set(MYSQL_RES *result) { MYSQL_ROW row; MYSQL_FIELD *field; @@ -523,7 +523,7 @@ int my_process_result_set(MYSQL_RES *result) } -int my_process_result(MYSQL *mysql_arg) +static int my_process_result(MYSQL *mysql_arg) { MYSQL_RES *result; int row_count; @@ -543,7 +543,7 @@ int my_process_result(MYSQL *mysql_arg) #define MAX_RES_FIELDS 50 #define MAX_FIELD_DATA_SIZE 255 -int my_process_stmt_result(MYSQL_STMT *stmt) +static int my_process_stmt_result(MYSQL_STMT *stmt) { int field_count; int row_count= 0; From b11a1c8fd459e662fb3a3317a206625461d52501 Mon Sep 17 00:00:00 2001 From: "msvensson@pilot.blaudden" <> Date: Mon, 23 Apr 2007 12:58:35 +0200 Subject: [PATCH 5/7] Update test to work also when --pager does not exist in "mysql" --- mysql-test/r/mysql.result | 2 -- mysql-test/t/mysql.test | 5 ++++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/mysql-test/r/mysql.result b/mysql-test/r/mysql.result index 74b5c42e59b..843f2c7285a 100644 --- a/mysql-test/r/mysql.result +++ b/mysql-test/r/mysql.result @@ -176,6 +176,4 @@ ERROR at line 1: DELIMITER cannot contain a backslash character ERROR at line 1: DELIMITER cannot contain a backslash character 1 1 -1 -1 End of 5.0 tests diff --git a/mysql-test/t/mysql.test b/mysql-test/t/mysql.test index 09e90e2ee2a..0732559e7e1 100644 --- a/mysql-test/t/mysql.test +++ b/mysql-test/t/mysql.test @@ -267,7 +267,10 @@ EOF # # bug #26851: Mysql Client --pager Buffer Overflow # ---exec $MYSQL --pager="540bytelengthstringxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" -e "select 1" 2>&1 + +# allow error 7(invalid argument) since --pager does not always exist in mysql +--error 0,7 +--exec $MYSQL --pager="540bytelengthstringxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" -e "select 1" > /dev/null 2>&1 --exec $MYSQL --character-sets-dir="540bytelengthstringxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" -e "select 1" 2>&1 --echo End of 5.0 tests From 714c36ce27a4915a6cb57dca23ed5f52a497c439 Mon Sep 17 00:00:00 2001 From: "msvensson@pilot.blaudden" <> Date: Mon, 23 Apr 2007 13:07:49 +0200 Subject: [PATCH 6/7] It's not possible to use the return value of fputs to check if the creation of mysql_upgrade_info suceeded. Instead use 'upgrade_already_done' to check that file was created properly. --- client/mysql_upgrade.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/client/mysql_upgrade.c b/client/mysql_upgrade.c index aeda47c48eb..d7486327e1b 100644 --- a/client/mysql_upgrade.c +++ b/client/mysql_upgrade.c @@ -578,14 +578,20 @@ static void create_mysql_upgrade_info_file(void) return; } - /* Write new version to file, just print a message if it fails */ - if (!fputs(MYSQL_SERVER_VERSION, out)) + /* Write new version to file */ + fputs(MYSQL_SERVER_VERSION, out); + my_fclose(out, MYF(0)); + + /* + Check if the upgrad_info_file was properly created/updated + It's not a fatal error -> just print a message if it fails + */ + if (!upgrade_already_done()) fprintf(stderr, "Could not write to the upgrade info file '%s' in " "the MySQL Servers datadir, errno: %d\n", upgrade_info_file, errno); - - my_fclose(out, MYF(0)); + return; } From 7ddc33753ec338969a205e5ff9904d74ccb973c7 Mon Sep 17 00:00:00 2001 From: "msvensson@pilot.blaudden" <> Date: Mon, 23 Apr 2007 13:27:55 +0200 Subject: [PATCH 7/7] Use a temp variable "error" for storing return code of pclose so the WEXITSTATUS macro can "fiddle" with it as it so pleases --- client/mysql_upgrade.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/client/mysql_upgrade.c b/client/mysql_upgrade.c index d7486327e1b..64de3d19882 100644 --- a/client/mysql_upgrade.c +++ b/client/mysql_upgrade.c @@ -250,6 +250,7 @@ static int run_command(char* cmd, { char buf[512]= {0}; FILE *res_file; + int error; if (!(res_file= popen(cmd, "r"))) die("popen(\"%s\", \"r\") failed", cmd); @@ -269,7 +270,8 @@ static int run_command(char* cmd, } } - return WEXITSTATUS(pclose(res_file)); + error= pclose(res_file); + return WEXITSTATUS(error); }