Skip to content

Commit 6594835

Browse files
Shishir JaiswalHery Ramilison
authored andcommitted
Merge branch 'mysql-5.5' into mysql-5.6
(cherry picked from commit d8de93d8853fce9246c5ada4de4b47b1f59b912e)
1 parent 343c1df commit 6594835

File tree

8 files changed

+89
-58
lines changed

8 files changed

+89
-58
lines changed

client/mysqladmin.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1106,7 +1106,7 @@ static int execute_commands(MYSQL *mysql,int argc, char **argv)
11061106

11071107
int offset= sprintf(buffer, "ALTER USER USER() IDENTIFIED BY '");
11081108
int length= (int)mysql_real_escape_string(mysql, buffer + offset,
1109-
typed_password,
1109+
typed_password, (ulong)
11101110
strlen(typed_password));
11111111
if (length == -1)
11121112
{

client/mysqlcheck.c

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

@@ -501,7 +501,7 @@ static int process_selected_tables(char *db, char **table_names, int tables)
501501
*end++= ',';
502502
}
503503
*--end = 0;
504-
handle_request_for_tables(table_names_comma_sep + 1, (uint) (tot_length - 1));
504+
handle_request_for_tables(table_names_comma_sep + 1, tot_length - 1);
505505
my_free(table_names_comma_sep);
506506
}
507507
else
@@ -511,10 +511,10 @@ static int process_selected_tables(char *db, char **table_names, int tables)
511511
} /* process_selected_tables */
512512

513513

514-
static uint fixed_name_length(const char *name)
514+
static size_t fixed_name_length(const char *name)
515515
{
516516
const char *p;
517-
uint extra_length= 2; /* count the first/last backticks */
517+
size_t extra_length= 2; /* count the first/last backticks */
518518

519519
for (p= name; *p; p++)
520520
{
@@ -523,7 +523,7 @@ static uint fixed_name_length(const char *name)
523523
else if (*p == '.')
524524
extra_length+= 2;
525525
}
526-
return (uint) ((p - name) + extra_length);
526+
return (size_t) ((p - name) + extra_length);
527527
}
528528

529529

@@ -579,7 +579,7 @@ static int process_all_tables_in_db(char *database)
579579
*/
580580

581581
char *tables, *end;
582-
uint tot_length = 0;
582+
size_t tot_length = 0;
583583

584584
while ((row = mysql_fetch_row(res)))
585585
tot_length+= fixed_name_length(row[0]) + 2;
@@ -637,7 +637,9 @@ static int fix_table_storage_name(const char *name)
637637
int rc= 0;
638638
if (strncmp(name, "#mysql50#", 9))
639639
return 1;
640-
sprintf(qbuf, "RENAME TABLE `%s` TO `%s`", name, name + 9);
640+
my_snprintf(qbuf, sizeof(qbuf), "RENAME TABLE `%s` TO `%s`",
641+
name, name + 9);
642+
641643
rc= run_query(qbuf);
642644
if (verbose)
643645
printf("%-50s %s\n", name, rc ? "FAILED" : "OK");
@@ -650,7 +652,8 @@ static int fix_database_storage_name(const char *name)
650652
int rc= 0;
651653
if (strncmp(name, "#mysql50#", 9))
652654
return 1;
653-
sprintf(qbuf, "ALTER DATABASE `%s` UPGRADE DATA DIRECTORY NAME", name);
655+
my_snprintf(qbuf, sizeof(qbuf), "ALTER DATABASE `%s` UPGRADE DATA DIRECTORY "
656+
"NAME", name);
654657
rc= run_query(qbuf);
655658
if (verbose)
656659
printf("%-50s %s\n", name, rc ? "FAILED" : "OK");
@@ -668,7 +671,7 @@ static int rebuild_table(char *name)
668671
ptr= strmov(query, "ALTER TABLE ");
669672
ptr= fix_table_name(ptr, name);
670673
ptr= strxmov(ptr, " FORCE", NullS);
671-
if (mysql_real_query(sock, query, (uint)(ptr - query)))
674+
if (mysql_real_query(sock, query, (ulong)(ptr - query)))
672675
{
673676
fprintf(stderr, "Failed to %s\n", query);
674677
fprintf(stderr, "Error: %s\n", mysql_error(sock));
@@ -721,10 +724,10 @@ static int disable_binlog()
721724
return run_query(stmt);
722725
}
723726

724-
static int handle_request_for_tables(char *tables, uint length)
727+
static int handle_request_for_tables(char *tables, size_t length)
725728
{
726729
char *query, *end, options[100], message[100];
727-
uint query_length= 0;
730+
size_t query_length= 0, query_size= sizeof(char)*(length+110);
728731
const char *op = 0;
729732

730733
options[0] = 0;
@@ -755,10 +758,14 @@ static int handle_request_for_tables(char *tables, uint length)
755758
return fix_table_storage_name(tables);
756759
}
757760

758-
if (!(query =(char *) my_malloc((sizeof(char)*(length+110)), MYF(MY_WME))))
761+
if (!(query =(char *) my_malloc(query_size, MYF(MY_WME))))
762+
{
759763
return 1;
764+
}
760765
if (opt_all_in_1)
761766
{
767+
DBUG_ASSERT(strlen(op)+strlen(tables)+strlen(options)+8+1 <= query_size);
768+
762769
/* No backticks here as we added them before */
763770
query_length= sprintf(query, "%s TABLE %s %s", op, tables, options);
764771
}
@@ -769,7 +776,7 @@ static int handle_request_for_tables(char *tables, uint length)
769776
ptr= strmov(strmov(query, op), " TABLE ");
770777
ptr= fix_table_name(ptr, tables);
771778
ptr= strxmov(ptr, " ", options, NullS);
772-
query_length= (uint) (ptr - query);
779+
query_length= (size_t) (ptr - query);
773780
}
774781
if (mysql_real_query(sock, query, query_length))
775782
{
@@ -853,7 +860,10 @@ static void print_result()
853860
prev_alter[0]= 0;
854861
}
855862
else
856-
strcpy(prev_alter, alter_txt);
863+
{
864+
strncpy(prev_alter, alter_txt, MAX_ALTER_STR_SIZE-1);
865+
prev_alter[MAX_ALTER_STR_SIZE-1]= 0;
866+
}
857867
}
858868
}
859869
}
@@ -1008,7 +1018,7 @@ int main(int argc, char **argv)
10081018
process_databases(argv);
10091019
if (opt_auto_repair)
10101020
{
1011-
uint i;
1021+
size_t i;
10121022

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

client/mysqldump.c

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

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

@@ -885,7 +885,7 @@ get_one_option(int optid, const struct my_option *opt MY_ATTRIBUTE((unused)),
885885
opt_set_charset= 0;
886886
opt_compatible_mode_str= argument;
887887
opt_compatible_mode= find_set(&compatible_mode_typelib,
888-
argument, (uint) strlen(argument),
888+
argument, strlen(argument),
889889
&err_ptr, &err_len);
890890
if (err_len)
891891
{
@@ -895,7 +895,7 @@ get_one_option(int optid, const struct my_option *opt MY_ATTRIBUTE((unused)),
895895
}
896896
#if !defined(DBUG_OFF)
897897
{
898-
uint size_for_sql_mode= 0;
898+
size_t size_for_sql_mode= 0;
899899
const char **ptr;
900900
for (ptr= compatible_mode_names; *ptr; ptr++)
901901
size_for_sql_mode+= strlen(*ptr);
@@ -1182,8 +1182,8 @@ static int fetch_db_collation(const char *db_name,
11821182
break;
11831183
}
11841184

1185-
strncpy(db_cl_name, db_cl_row[0], db_cl_size);
1186-
db_cl_name[db_cl_size - 1]= 0; /* just in case. */
1185+
strncpy(db_cl_name, db_cl_row[0], db_cl_size-1);
1186+
db_cl_name[db_cl_size - 1]= 0;
11871187

11881188
} while (FALSE);
11891189

@@ -1194,7 +1194,7 @@ static int fetch_db_collation(const char *db_name,
11941194

11951195

11961196
static char *my_case_str(const char *str,
1197-
uint str_len,
1197+
size_t str_len,
11981198
const char *token,
11991199
uint token_len)
12001200
{
@@ -1410,7 +1410,7 @@ static int switch_character_set_results(MYSQL *mysql, const char *cs_name)
14101410
*/
14111411

14121412
static char *cover_definer_clause(const char *stmt_str,
1413-
uint stmt_length,
1413+
size_t stmt_length,
14141414
const char *definer_version_str,
14151415
uint definer_version_length,
14161416
const char *stmt_version_str,
@@ -1603,14 +1603,14 @@ static void dbDisconnect(char *host)
16031603
} /* dbDisconnect */
16041604

16051605

1606-
static void unescape(FILE *file,char *pos,uint length)
1606+
static void unescape(FILE *file,char *pos, size_t length)
16071607
{
16081608
char *tmp;
16091609
DBUG_ENTER("unescape");
16101610
if (!(tmp=(char*) my_malloc(length*2+1, MYF(MY_WME))))
16111611
die(EX_MYSQLERR, "Couldn't allocate memory");
16121612

1613-
mysql_real_escape_string(&mysql_connection, tmp, pos, length);
1613+
mysql_real_escape_string(&mysql_connection, tmp, pos, (ulong)length);
16141614
fputc('\'', file);
16151615
fputs(tmp, file);
16161616
fputc('\'', file);
@@ -1724,7 +1724,7 @@ static char *quote_for_like(const char *name, char *buff)
17241724
Quote '<' '>' '&' '\"' chars and print a string to the xml_file.
17251725
*/
17261726

1727-
static void print_quoted_xml(FILE *xml_file, const char *str, ulong len,
1727+
static void print_quoted_xml(FILE *xml_file, const char *str, size_t len,
17281728
my_bool is_attribute_name)
17291729
{
17301730
const char *end;
@@ -1983,7 +1983,7 @@ static void print_xml_row(FILE *xml_file, const char *row_name,
19831983
squeezed to a single hyphen.
19841984
*/
19851985

1986-
static void print_xml_comment(FILE *xml_file, ulong len,
1986+
static void print_xml_comment(FILE *xml_file, size_t len,
19871987
const char *comment_string)
19881988
{
19891989
const char* end;
@@ -2100,7 +2100,7 @@ static uint dump_events_for_db(char *db)
21002100
DBUG_ENTER("dump_events_for_db");
21012101
DBUG_PRINT("enter", ("db: '%s'", db));
21022102

2103-
mysql_real_escape_string(mysql, db_name_buff, db, strlen(db));
2103+
mysql_real_escape_string(mysql, db_name_buff, db, (ulong)strlen(db));
21042104

21052105
/* nice comments */
21062106
print_comment(sql_file, 0,
@@ -2219,6 +2219,11 @@ static uint dump_events_for_db(char *db)
22192219
(const char *) (query_str != NULL ? query_str : row[3]),
22202220
(const char *) delimiter);
22212221

2222+
if(query_str)
2223+
{
2224+
my_free(query_str);
2225+
query_str= NULL;
2226+
}
22222227
restore_time_zone(sql_file, delimiter);
22232228
restore_sql_mode(sql_file, delimiter);
22242229

@@ -2312,7 +2317,7 @@ static uint dump_routines_for_db(char *db)
23122317
DBUG_ENTER("dump_routines_for_db");
23132318
DBUG_PRINT("enter", ("db: '%s'", db));
23142319

2315-
mysql_real_escape_string(mysql, db_name_buff, db, strlen(db));
2320+
mysql_real_escape_string(mysql, db_name_buff, db, (ulong)strlen(db));
23162321

23172322
/* nice comments */
23182323
print_comment(sql_file, 0,
@@ -2366,9 +2371,9 @@ static uint dump_routines_for_db(char *db)
23662371
if the user has EXECUTE privilege he see routine names, but NOT the
23672372
routine body of other routines that are not the creator of!
23682373
*/
2369-
DBUG_PRINT("info",("length of body for %s row[2] '%s' is %d",
2374+
DBUG_PRINT("info",("length of body for %s row[2] '%s' is %zu",
23702375
routine_name, row[2] ? row[2] : "(null)",
2371-
row[2] ? (int) strlen(row[2]) : 0));
2376+
row[2] ? strlen(row[2]) : 0));
23722377
if (row[2] == NULL)
23732378
{
23742379
print_comment(sql_file, 1, "\n-- insufficient privileges to %s\n",
@@ -3915,7 +3920,7 @@ static int dump_tablespaces_for_tables(char *db, char **table_names, int tables)
39153920
int i;
39163921
char name_buff[NAME_LEN*2+3];
39173922

3918-
mysql_real_escape_string(mysql, name_buff, db, strlen(db));
3923+
mysql_real_escape_string(mysql, name_buff, db, (ulong)strlen(db));
39193924

39203925
init_dynamic_string_checked(&where, " AND TABLESPACE_NAME IN ("
39213926
"SELECT DISTINCT TABLESPACE_NAME FROM"
@@ -3928,7 +3933,7 @@ static int dump_tablespaces_for_tables(char *db, char **table_names, int tables)
39283933
for (i=0 ; i<tables ; i++)
39293934
{
39303935
mysql_real_escape_string(mysql, name_buff,
3931-
table_names[i], strlen(table_names[i]));
3936+
table_names[i], (ulong)strlen(table_names[i]));
39323937

39333938
dynstr_append_checked(&where, "'");
39343939
dynstr_append_checked(&where, name_buff);
@@ -3959,7 +3964,7 @@ static int dump_tablespaces_for_databases(char** databases)
39593964
{
39603965
char db_name_buff[NAME_LEN*2+3];
39613966
mysql_real_escape_string(mysql, db_name_buff,
3962-
databases[i], strlen(databases[i]));
3967+
databases[i], (ulong)strlen(databases[i]));
39633968
dynstr_append_checked(&where, "'");
39643969
dynstr_append_checked(&where, db_name_buff);
39653970
dynstr_append_checked(&where, "',");
@@ -5086,7 +5091,7 @@ static int start_transaction(MYSQL *mysql_con)
50865091
}
50875092

50885093

5089-
static ulong find_set(TYPELIB *lib, const char *x, uint length,
5094+
static ulong find_set(TYPELIB *lib, const char *x, size_t length,
50905095
char **err_pos, uint *err_len)
50915096
{
50925097
const char *end= x + length;
@@ -5144,7 +5149,7 @@ static void print_value(FILE *file, MYSQL_RES *result, MYSQL_ROW row,
51445149
fputc(' ',file);
51455150
fputs(prefix, file);
51465151
if (string_value)
5147-
unescape(file,row[0],(uint) strlen(row[0]));
5152+
unescape(file,row[0], strlen(row[0]));
51485153
else
51495154
fputs(row[0], file);
51505155
check_io(file);
@@ -5554,8 +5559,8 @@ static my_bool get_view_structure(char *table, char* db)
55545559
verbose_msg("-- Retrieving view structure for table %s...\n", table);
55555560

55565561
#ifdef NOT_REALLY_USED_YET
5557-
sprintf(insert_pat,"SET SQL_QUOTE_SHOW_CREATE=%d",
5558-
(opt_quoted || opt_keywords));
5562+
dynstr_append_checked(&insert_pat, "SET SQL_QUOTE_SHOW_CREATE=");
5563+
dynstr_append_checked(&insert_pat, (opt_quoted || opt_keywords)? "1":"0");
55595564
#endif
55605565

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

0 commit comments

Comments
 (0)