Skip to content

Commit e9d0f52

Browse files
committed
Merge tag 'mysql-5.5.50' into mysql-5.5-cluster-7.2
2 parents 9f83003 + ef3f09f commit e9d0f52

29 files changed

+332
-123
lines changed

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
MYSQL_VERSION_MAJOR=5
22
MYSQL_VERSION_MINOR=5
3-
MYSQL_VERSION_PATCH=49
3+
MYSQL_VERSION_PATCH=50
44
MYSQL_VERSION_EXTRA=-ndb-7.2.25

client/mysqlcheck.c

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -221,13 +221,13 @@ static int process_selected_tables(char *db, char **table_names, int tables);
221221
static int process_all_tables_in_db(char *database);
222222
static int process_one_db(char *database);
223223
static int use_db(char *database);
224-
static int handle_request_for_tables(char *tables, uint length);
224+
static int handle_request_for_tables(char *tables, size_t length);
225225
static int dbConnect(char *host, char *user,char *passwd);
226226
static void dbDisconnect(char *host);
227227
static void DBerror(MYSQL *mysql, const char *when);
228228
static void safe_exit(int error);
229229
static void print_result();
230-
static uint fixed_name_length(const char *name);
230+
static size_t fixed_name_length(const char *name);
231231
static char *fix_table_name(char *dest, char *src);
232232
int what_to_do = 0;
233233

@@ -494,7 +494,7 @@ static int process_selected_tables(char *db, char **table_names, int tables)
494494
*end++= ',';
495495
}
496496
*--end = 0;
497-
handle_request_for_tables(table_names_comma_sep + 1, (uint) (tot_length - 1));
497+
handle_request_for_tables(table_names_comma_sep + 1, tot_length - 1);
498498
my_free(table_names_comma_sep);
499499
}
500500
else
@@ -504,10 +504,10 @@ static int process_selected_tables(char *db, char **table_names, int tables)
504504
} /* process_selected_tables */
505505

506506

507-
static uint fixed_name_length(const char *name)
507+
static size_t fixed_name_length(const char *name)
508508
{
509509
const char *p;
510-
uint extra_length= 2; /* count the first/last backticks */
510+
size_t extra_length= 2; /* count the first/last backticks */
511511

512512
for (p= name; *p; p++)
513513
{
@@ -516,7 +516,7 @@ static uint fixed_name_length(const char *name)
516516
else if (*p == '.')
517517
extra_length+= 2;
518518
}
519-
return (uint) ((p - name) + extra_length);
519+
return (size_t) ((p - name) + extra_length);
520520
}
521521

522522

@@ -572,7 +572,7 @@ static int process_all_tables_in_db(char *database)
572572
*/
573573

574574
char *tables, *end;
575-
uint tot_length = 0;
575+
size_t tot_length = 0;
576576

577577
while ((row = mysql_fetch_row(res)))
578578
tot_length+= fixed_name_length(row[0]) + 2;
@@ -630,7 +630,9 @@ static int fix_table_storage_name(const char *name)
630630
int rc= 0;
631631
if (strncmp(name, "#mysql50#", 9))
632632
return 1;
633-
sprintf(qbuf, "RENAME TABLE `%s` TO `%s`", name, name + 9);
633+
my_snprintf(qbuf, sizeof(qbuf), "RENAME TABLE `%s` TO `%s`",
634+
name, name + 9);
635+
634636
rc= run_query(qbuf);
635637
if (verbose)
636638
printf("%-50s %s\n", name, rc ? "FAILED" : "OK");
@@ -643,7 +645,8 @@ static int fix_database_storage_name(const char *name)
643645
int rc= 0;
644646
if (strncmp(name, "#mysql50#", 9))
645647
return 1;
646-
sprintf(qbuf, "ALTER DATABASE `%s` UPGRADE DATA DIRECTORY NAME", name);
648+
my_snprintf(qbuf, sizeof(qbuf), "ALTER DATABASE `%s` UPGRADE DATA DIRECTORY "
649+
"NAME", name);
647650
rc= run_query(qbuf);
648651
if (verbose)
649652
printf("%-50s %s\n", name, rc ? "FAILED" : "OK");
@@ -661,7 +664,7 @@ static int rebuild_table(char *name)
661664
ptr= strmov(query, "ALTER TABLE ");
662665
ptr= fix_table_name(ptr, name);
663666
ptr= strxmov(ptr, " FORCE", NullS);
664-
if (mysql_real_query(sock, query, (uint)(ptr - query)))
667+
if (mysql_real_query(sock, query, (ulong)(ptr - query)))
665668
{
666669
fprintf(stderr, "Failed to %s\n", query);
667670
fprintf(stderr, "Error: %s\n", mysql_error(sock));
@@ -710,10 +713,10 @@ static int disable_binlog()
710713
return run_query(stmt);
711714
}
712715

713-
static int handle_request_for_tables(char *tables, uint length)
716+
static int handle_request_for_tables(char *tables, size_t length)
714717
{
715718
char *query, *end, options[100], message[100];
716-
uint query_length= 0;
719+
size_t query_length= 0, query_size= sizeof(char)*(length+110);
717720
const char *op = 0;
718721

719722
options[0] = 0;
@@ -744,10 +747,14 @@ static int handle_request_for_tables(char *tables, uint length)
744747
return fix_table_storage_name(tables);
745748
}
746749

747-
if (!(query =(char *) my_malloc((sizeof(char)*(length+110)), MYF(MY_WME))))
750+
if (!(query =(char *) my_malloc(query_size, MYF(MY_WME))))
751+
{
748752
return 1;
753+
}
749754
if (opt_all_in_1)
750755
{
756+
DBUG_ASSERT(strlen(op)+strlen(tables)+strlen(options)+8+1 <= query_size);
757+
751758
/* No backticks here as we added them before */
752759
query_length= sprintf(query, "%s TABLE %s %s", op, tables, options);
753760
}
@@ -758,7 +765,7 @@ static int handle_request_for_tables(char *tables, uint length)
758765
ptr= strmov(strmov(query, op), " TABLE ");
759766
ptr= fix_table_name(ptr, tables);
760767
ptr= strxmov(ptr, " ", options, NullS);
761-
query_length= (uint) (ptr - query);
768+
query_length= (size_t) (ptr - query);
762769
}
763770
if (mysql_real_query(sock, query, query_length))
764771
{
@@ -842,7 +849,10 @@ static void print_result()
842849
prev_alter[0]= 0;
843850
}
844851
else
845-
strcpy(prev_alter, alter_txt);
852+
{
853+
strncpy(prev_alter, alter_txt, MAX_ALTER_STR_SIZE-1);
854+
prev_alter[MAX_ALTER_STR_SIZE-1]= 0;
855+
}
846856
}
847857
}
848858
}
@@ -990,7 +1000,7 @@ int main(int argc, char **argv)
9901000
process_databases(argv);
9911001
if (opt_auto_repair)
9921002
{
993-
uint i;
1003+
size_t i;
9941004

9951005
if (!opt_silent && (tables4repair.elements || tables4rebuild.elements))
9961006
puts("\nRepairing tables");

client/mysqldump.c

Lines changed: 27 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@
8686

8787
static void add_load_option(DYNAMIC_STRING *str, const char *option,
8888
const char *option_value);
89-
static ulong find_set(TYPELIB *lib, const char *x, uint length,
89+
static ulong find_set(TYPELIB *lib, const char *x, size_t length,
9090
char **err_pos, uint *err_len);
9191
static char *alloc_query_str(ulong size);
9292

@@ -867,7 +867,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
867867
opt_set_charset= 0;
868868
opt_compatible_mode_str= argument;
869869
opt_compatible_mode= find_set(&compatible_mode_typelib,
870-
argument, (uint) strlen(argument),
870+
argument, strlen(argument),
871871
&err_ptr, &err_len);
872872
if (err_len)
873873
{
@@ -877,7 +877,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
877877
}
878878
#if !defined(DBUG_OFF)
879879
{
880-
uint size_for_sql_mode= 0;
880+
size_t size_for_sql_mode= 0;
881881
const char **ptr;
882882
for (ptr= compatible_mode_names; *ptr; ptr++)
883883
size_for_sql_mode+= strlen(*ptr);
@@ -1153,8 +1153,8 @@ static int fetch_db_collation(const char *db_name,
11531153
break;
11541154
}
11551155

1156-
strncpy(db_cl_name, db_cl_row[0], db_cl_size);
1157-
db_cl_name[db_cl_size - 1]= 0; /* just in case. */
1156+
strncpy(db_cl_name, db_cl_row[0], db_cl_size-1);
1157+
db_cl_name[db_cl_size - 1]= 0;
11581158

11591159
} while (FALSE);
11601160

@@ -1165,7 +1165,7 @@ static int fetch_db_collation(const char *db_name,
11651165

11661166

11671167
static char *my_case_str(const char *str,
1168-
uint str_len,
1168+
size_t str_len,
11691169
const char *token,
11701170
uint token_len)
11711171
{
@@ -1381,7 +1381,7 @@ static int switch_character_set_results(MYSQL *mysql, const char *cs_name)
13811381
*/
13821382

13831383
static char *cover_definer_clause(const char *stmt_str,
1384-
uint stmt_length,
1384+
size_t stmt_length,
13851385
const char *definer_version_str,
13861386
uint definer_version_length,
13871387
const char *stmt_version_str,
@@ -1567,14 +1567,14 @@ static void dbDisconnect(char *host)
15671567
} /* dbDisconnect */
15681568

15691569

1570-
static void unescape(FILE *file,char *pos,uint length)
1570+
static void unescape(FILE *file,char *pos, size_t length)
15711571
{
15721572
char *tmp;
15731573
DBUG_ENTER("unescape");
15741574
if (!(tmp=(char*) my_malloc(length*2+1, MYF(MY_WME))))
15751575
die(EX_MYSQLERR, "Couldn't allocate memory");
15761576

1577-
mysql_real_escape_string(&mysql_connection, tmp, pos, length);
1577+
mysql_real_escape_string(&mysql_connection, tmp, pos, (ulong)length);
15781578
fputc('\'', file);
15791579
fputs(tmp, file);
15801580
fputc('\'', file);
@@ -1688,7 +1688,7 @@ static char *quote_for_like(const char *name, char *buff)
16881688
Quote '<' '>' '&' '\"' chars and print a string to the xml_file.
16891689
*/
16901690

1691-
static void print_quoted_xml(FILE *xml_file, const char *str, ulong len,
1691+
static void print_quoted_xml(FILE *xml_file, const char *str, size_t len,
16921692
my_bool is_attribute_name)
16931693
{
16941694
const char *end;
@@ -1947,7 +1947,7 @@ static void print_xml_row(FILE *xml_file, const char *row_name,
19471947
squeezed to a single hyphen.
19481948
*/
19491949

1950-
static void print_xml_comment(FILE *xml_file, ulong len,
1950+
static void print_xml_comment(FILE *xml_file, size_t len,
19511951
const char *comment_string)
19521952
{
19531953
const char* end;
@@ -2064,7 +2064,7 @@ static uint dump_events_for_db(char *db)
20642064
DBUG_ENTER("dump_events_for_db");
20652065
DBUG_PRINT("enter", ("db: '%s'", db));
20662066

2067-
mysql_real_escape_string(mysql, db_name_buff, db, strlen(db));
2067+
mysql_real_escape_string(mysql, db_name_buff, db, (ulong)strlen(db));
20682068

20692069
/* nice comments */
20702070
print_comment(sql_file, 0,
@@ -2183,6 +2183,11 @@ static uint dump_events_for_db(char *db)
21832183
(const char *) (query_str != NULL ? query_str : row[3]),
21842184
(const char *) delimiter);
21852185

2186+
if(query_str)
2187+
{
2188+
my_free(query_str);
2189+
query_str= NULL;
2190+
}
21862191
restore_time_zone(sql_file, delimiter);
21872192
restore_sql_mode(sql_file, delimiter);
21882193

@@ -2276,7 +2281,7 @@ static uint dump_routines_for_db(char *db)
22762281
DBUG_ENTER("dump_routines_for_db");
22772282
DBUG_PRINT("enter", ("db: '%s'", db));
22782283

2279-
mysql_real_escape_string(mysql, db_name_buff, db, strlen(db));
2284+
mysql_real_escape_string(mysql, db_name_buff, db, (ulong)strlen(db));
22802285

22812286
/* nice comments */
22822287
print_comment(sql_file, 0,
@@ -2330,9 +2335,9 @@ static uint dump_routines_for_db(char *db)
23302335
if the user has EXECUTE privilege he see routine names, but NOT the
23312336
routine body of other routines that are not the creator of!
23322337
*/
2333-
DBUG_PRINT("info",("length of body for %s row[2] '%s' is %d",
2338+
DBUG_PRINT("info",("length of body for %s row[2] '%s' is %zu",
23342339
routine_name, row[2] ? row[2] : "(null)",
2335-
row[2] ? (int) strlen(row[2]) : 0));
2340+
row[2] ? strlen(row[2]) : 0));
23362341
if (row[2] == NULL)
23372342
{
23382343
print_comment(sql_file, 1, "\n-- insufficient privileges to %s\n",
@@ -3902,7 +3907,7 @@ static int dump_tablespaces_for_tables(char *db, char **table_names, int tables)
39023907
int i;
39033908
char name_buff[NAME_LEN*2+3];
39043909

3905-
mysql_real_escape_string(mysql, name_buff, db, strlen(db));
3910+
mysql_real_escape_string(mysql, name_buff, db, (ulong)strlen(db));
39063911

39073912
init_dynamic_string_checked(&where, " AND TABLESPACE_NAME IN ("
39083913
"SELECT DISTINCT TABLESPACE_NAME FROM"
@@ -3915,7 +3920,7 @@ static int dump_tablespaces_for_tables(char *db, char **table_names, int tables)
39153920
for (i=0 ; i<tables ; i++)
39163921
{
39173922
mysql_real_escape_string(mysql, name_buff,
3918-
table_names[i], strlen(table_names[i]));
3923+
table_names[i], (ulong)strlen(table_names[i]));
39193924

39203925
dynstr_append_checked(&where, "'");
39213926
dynstr_append_checked(&where, name_buff);
@@ -3946,7 +3951,7 @@ static int dump_tablespaces_for_databases(char** databases)
39463951
{
39473952
char db_name_buff[NAME_LEN*2+3];
39483953
mysql_real_escape_string(mysql, db_name_buff,
3949-
databases[i], strlen(databases[i]));
3954+
databases[i], (ulong)strlen(databases[i]));
39503955
dynstr_append_checked(&where, "'");
39513956
dynstr_append_checked(&where, db_name_buff);
39523957
dynstr_append_checked(&where, "',");
@@ -5018,7 +5023,7 @@ static int start_transaction(MYSQL *mysql_con)
50185023
}
50195024

50205025

5021-
static ulong find_set(TYPELIB *lib, const char *x, uint length,
5026+
static ulong find_set(TYPELIB *lib, const char *x, size_t length,
50225027
char **err_pos, uint *err_len)
50235028
{
50245029
const char *end= x + length;
@@ -5076,7 +5081,7 @@ static void print_value(FILE *file, MYSQL_RES *result, MYSQL_ROW row,
50765081
fputc(' ',file);
50775082
fputs(prefix, file);
50785083
if (string_value)
5079-
unescape(file,row[0],(uint) strlen(row[0]));
5084+
unescape(file,row[0], strlen(row[0]));
50805085
else
50815086
fputs(row[0], file);
50825087
check_io(file);
@@ -5329,8 +5334,8 @@ static my_bool get_view_structure(char *table, char* db)
53295334
verbose_msg("-- Retrieving view structure for table %s...\n", table);
53305335

53315336
#ifdef NOT_REALLY_USED_YET
5332-
sprintf(insert_pat, "SET SQL_QUOTE_SHOW_CREATE=%d",
5333-
(opt_quoted || opt_keywords));
5337+
dynstr_append_checked(&insert_pat, "SET SQL_QUOTE_SHOW_CREATE=");
5338+
dynstr_append_checked(&insert_pat, (opt_quoted || opt_keywords)? "1":"0");
53345339
#endif
53355340

53365341
result_table= quote_name(table, table_buff, 1);

0 commit comments

Comments
 (0)