| Bug #58154 | uninitialized variable format in str_to_date function | ||
|---|---|---|---|
| Submitted: | 12 Nov 2010 6:43 | Modified: | 19 Apr 2011 16:40 |
| Reporter: | Shane Bester (Platinum Quality Contributor) | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: Data Types | Severity: | S2 (Serious) |
| Version: | 5.1.54, 5.5.9 | OS: | Any |
| Assigned to: | CPU Architecture: | Any | |
| Tags: | STR_TO_DATE | ||
[12 Nov 2010 6:43]
Shane Bester
[12 Nov 2010 6:45]
MySQL Verification Team
sorry, the bug is in 5.1.54, not 5.5.8.
[12 Nov 2010 8:06]
Valeriy Kravchuk
Verified on 32-bit Ubuntu 10.04: ... ==1731== Use of uninitialised value of size 4 ==1731== at 0x8210841: make_datetime(date_time_format_types, st_mysql_time*, String*) (item_timefunc.cc:67) ==1731== by 0x82197D2: Item_func_str_to_date::val_str(String*) (item_timefunc.cc:3376) ==1731== by 0x8203323: Item_str_func::val_int() (item_strfunc.cc:107) ==1731== by 0x83454B5: mysql_do(THD*, List<Item>&) (sql_do.cc:29) ==1731== by 0x828D48A: mysql_execute_command(THD*) (sql_parse.cc:2314) ==1731== by 0x8298EE1: mysql_parse(THD*, char*, unsigned int, char const**) (sql_parse.cc:6051) ==1731== by 0x828AD28: dispatch_command(enum_server_command, THD*, char*, unsigned int) (sql_parse.cc:1260) ==1731== by 0x8289E30: do_command(THD*) (sql_parse.cc:888) ==1731== by 0x8287FD1: handle_one_connection (sql_connect.cc:1136) ==1731== by 0x404196D: start_thread (pthread_create.c:300) ==1731== by 0x4196A4D: clone (clone.S:130) ...
[27 Dec 2010 21:00]
MySQL Verification Team
A testcase for 5.5.9 also:
select str_to_date('',@@global.init_slave | 1) - null;
Version: '5.5.9-valgrind-max-debug' socket: 'sock' port: 3307 Source distribution
Thread 17:
Conditional jump or move depends on uninitialised value(s)
at: make_datetime (item_timefunc.cc:88)
by: Item_func_str_to_date::val_str (item_timefunc.cc:3488)
by: Item_str_func::val_real (item_strfunc.cc:149)
by: Item_func_minus::real_op (item_func.cc:1257)
by: Item_func_numhybrid::val_real (item_func.cc:828)
by: Item::send (item.cc:5892)
by: Protocol::send_result_set_row (protocol.cc:848)
by: select_send::send_data (sql_class.cc:1862)
by: JOIN::exec (sql_select.cc:1860)
by: mysql_select (sql_select.cc:2571)
by: handle_select (sql_select.cc:297)
by: execute_sqlcom_select (sql_parse.cc:4472)
by: mysql_execute_command (sql_parse.cc:2053)
by: mysql_parse (sql_parse.cc:5509)
by: dispatch_command (sql_parse.cc:1035)
by: do_command (sql_parse.cc:772)
by: do_handle_one_connection (sql_connect.cc:748)
by: handle_one_connection (sql_connect.cc:684)
by: start_thread (pthread_create.c:301)
88 switch (format) {
(gdb) print format
$1 = TIME_ONLY
(gdb) list
83
84 if (str->alloc(length))
85 return 1;
86 buff= (char*) str->ptr();
87
88 switch (format) {
89 case TIME_ONLY:
90 length= cs->cset->snprintf(cs, buff, length, "%s%02d:%02d:%02d",
91 ltime->neg ? "-" : "",
92 ltime->hour, ltime->minute, ltime->second);
(
[19 Apr 2011 16:40]
Paul DuBois
Noted in 5.1.57, 5.5.12, 5.6.3 changelogs. In Item_func_str_to_date::val_str, a Valgrind warning for an uninitialized variable was corrected. CHANGESET - http://lists.mysql.com/commits/134056
