Bug #55755 | Date STD variable signness breaks server on FreeBSD and OpenBSD | ||
---|---|---|---|
Submitted: | 5 Aug 2010 2:48 | Modified: | 2 Mar 2011 15:43 |
Reporter: | Weyoun Washington | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: General | Severity: | S2 (Serious) |
Version: | 5.1.49, 5.1.54 | OS: | FreeBSD (and OpenBSD amd64) |
Assigned to: | Georgi Kodinov | CPU Architecture: | Any |
Tags: | Contribution, date |
[5 Aug 2010 2:48]
Weyoun Washington
[8 Sep 2010 10:08]
Valeriy Kravchuk
Please, send the results of uname -a from all systems affected. I want to know is it 64-bit only issue.
[8 Oct 2010 23:00]
Bugs System
No feedback was provided for this bug for over a month, so it is being suspended automatically. If you are able to provide the information that was originally requested, please do so and change the status of the bug back to "Open".
[25 Oct 2010 7:30]
Giovanni Bechis
Here is a system affected by this bug (on 5.1.51 too): OpenBSD bigio.snb.it 4.8 GENERIC.MP#3 amd64 The problem is not present on OpenBSD i386. On OpenBSD-amd64 time_t is defined as int, LONG_MIN is (-0x7fffffffffffffffL-1) and LONG_MAX is 0x7fffffffffffffffL. See http://bugs.mysql.com/bug.php?id=55538 for other informations.
[13 Dec 2010 9:18]
Ian McWilliam
Still busted with MySQL 5.1.53 101213 20:08:03 mysqld_safe Starting mysqld daemon with databases from /var/mysql 101213 20:08:03 [ERROR] This MySQL server doesn't support dates later then 2038 101213 20:08:03 [ERROR] Aborting Segmentation fault (core dumped) 101213 20:08:03 mysqld_safe mysqld from pid file /var/mysql/xena.mcw.com.au.pid ended 101213 20:08:53 mysqld_safe Starting mysqld daemon with databases from /var/mysql 101213 20:08:53 [ERROR] This MySQL server doesn't support dates later then 2038 101213 20:08:53 [ERROR] Aborting Segmentation fault (core dumped) xena:mysql {132} uname -a OpenBSD xena.mcw.com.au 4.8 GENERIC.MP#0 amd64
[2 Jan 2011 20:15]
Valeriy Kravchuk
Verified just as described with 5.1.54 on 64-bit OpenBSD 4.8 amd64. Thank you for your contribution and patience.
[2 Jan 2011 20:22]
Valeriy Kravchuk
Bug #55538 was marked as a duplicate of this one.
[3 Jan 2011 0:58]
Weyoun Washington
Update: GCC's int type is 32 bit on both i386 and amd64, where as the long type is the processor's word size. And because the point of MY_TIME_T_MAX is to corral timestamps to 32 bits, the most proper fix would actually be #define MY_TIME_T_MAX INT_MAX #define MY_TIME_T_MIN INT_MIN
[5 Jan 2011 15:39]
Georgi Kodinov
This is a regression from bug #52315. Changing target to 5.0+
[5 Jan 2011 18:08]
Georgi Kodinov
One notable difference between openbsd and MacOSX is that sizeof(time_t) is 4 in openbsd and 8 in MacOSX.
[6 Jan 2011 16:20]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/128103 2895 Georgi Kodinov 2011-01-06 Fixes for Bug #55755 and Bug #52315 part 2 Bug #55755 : Date STD variable signness breaks server on FreeBSD and OpenBSD * Added a check to configure on the size of time_t * Created a macro to check for a valid time_t that can fit into a my_time_t * Used the macro consistently instead of the ad-hoc checks introduced by 52315 * Fixed compliation warnings on platforms where the size of time_t is smaller than the size of a long (e.g. OpenBSD 4.8 64 amd64). Bug #52315: utc_date() crashes when system time > year 2037 * Added a correct check for the timestamp range instead of just variable size check to SET TIMESTAMP. * Added a test suite.
[17 Jan 2011 16:44]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/128995 2895 Georgi Kodinov 2011-01-17 Fixes for Bug #55755 and Bug #52315 part 2 Bug #55755 : Date STD variable signness breaks server on FreeBSD and OpenBSD * Added a check to configure on the size of time_t * Created a macro to check for a valid time_t that can fit into a my_time_t * Used the macro consistently instead of the ad-hoc checks introduced by 52315 * Fixed compliation warnings on platforms where the size of time_t is smaller than the size of a long (e.g. OpenBSD 4.8 64 amd64). Bug #52315: utc_date() crashes when system time > year 2037 * Added a correct check for the timestamp range instead of just variable size check to SET TIMESTAMP. * Added overflow checking before converting to time_t. * Using a correct localized error message in this case instead of the generic error. * Added a test suite.
[2 Feb 2011 14:31]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/130241 2895 Georgi Kodinov 2011-02-02 Fixes for Bug #55755 and Bug #52315 part 2 Bug #55755 : Date STD variable signness breaks server on FreeBSD and OpenBSD * Added a check to configure on the size of time_t * Created a macro to check for a valid time_t that can fit into a my_time_t * Used the macro consistently instead of the ad-hoc checks introduced by 52315 * Fixed compliation warnings on platforms where the size of time_t is smaller than the size of a long (e.g. OpenBSD 4.8 64 amd64). Bug #52315: utc_date() crashes when system time > year 2037 * Added a correct check for the timestamp range instead of just variable size check to SET TIMESTAMP. * Added overflow checking before converting to time_t. * Using a correct localized error message in this case instead of the generic error. * Added a test suite. * fixed the checks so that they check for unsigned time_t as well. Used the checks consistently across the source code.
[2 Feb 2011 16:02]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/130255 2899 Georgi Kodinov 2011-02-02 Fixes for Bug #55755 and Bug #52315 part 2 Bug #55755 : Date STD variable signness breaks server on FreeBSD and OpenBSD * Added a check to configure on the size of time_t * Created a macro to check for a valid time_t that is safe to use with datetime functions and store in TIMESTAMP columns. * Used the macro consistently instead of the ad-hoc checks introduced by 52315 * Fixed compliation warnings on platforms where the size of time_t is smaller than the size of a long (e.g. OpenBSD 4.8 64 amd64). Bug #52315: utc_date() crashes when system time > year 2037 * Added a correct check for the timestamp range instead of just variable size check to SET TIMESTAMP. * Added overflow checking before converting to time_t. * Using a correct localized error message in this case instead of the generic error. * Added a test suite. * fixed the checks so that they check for unsigned time_t as well. Used the checks consistently across the source code.
[2 Feb 2011 16:52]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/130262 2899 Georgi Kodinov 2011-02-02 Fixes for Bug #55755 and Bug #52315 part 2 Bug #55755 : Date STD variable signness breaks server on FreeBSD and OpenBSD * Added a check to configure on the size of time_t * Created a macro to check for a valid time_t that is safe to use with datetime functions and store in TIMESTAMP columns. * Used the macro consistently instead of the ad-hoc checks introduced by 52315 * Fixed compliation warnings on platforms where the size of time_t is smaller than the size of a long (e.g. OpenBSD 4.8 64 amd64). Bug #52315: utc_date() crashes when system time > year 2037 * Added a correct check for the timestamp range instead of just variable size check to SET TIMESTAMP. * Added overflow checking before converting to time_t. * Using a correct localized error message in this case instead of the generic error. * Added a test suite. * fixed the checks so that they check for unsigned time_t as well. Used the checks consistently across the source code. * fixed the original test case to expect the new error code.
[2 Feb 2011 18:32]
Bugs System
Pushed into mysql-5.0 5.0.93 (revid:georgi.kodinov@oracle.com-20110202181057-x9aqy01fb2t5xm2n) (version source revid:georgi.kodinov@oracle.com-20110202165135-8hieawdkp931quj0) (merge vers: 5.0.93) (pib:24)
[2 Feb 2011 18:32]
Bugs System
Pushed into mysql-5.1 5.1.56 (revid:georgi.kodinov@oracle.com-20110202181311-43bd41beoas8nlcd) (version source revid:georgi.kodinov@oracle.com-20110202170528-gm46bal54qpnsehp) (merge vers: 5.1.56) (pib:24)
[2 Feb 2011 18:33]
Bugs System
Pushed into mysql-5.5 5.5.10 (revid:georgi.kodinov@oracle.com-20110202181606-hi05so9jg3q05486) (version source revid:georgi.kodinov@oracle.com-20110202181328-vw3wyjzm6yzxpcs3) (merge vers: 5.5.10) (pib:24)
[2 Feb 2011 18:33]
Bugs System
Pushed into mysql-trunk 5.6.2 (revid:georgi.kodinov@oracle.com-20110202183139-ykxq0tjd2vo3km91) (version source revid:georgi.kodinov@oracle.com-20110202183139-ykxq0tjd2vo3km91) (merge vers: 5.6.2) (pib:24)
[2 Mar 2011 15:43]
Paul DuBois
Noted in 5.0.93, 5.1.56, 5.5.10, 5.6.2 changelogs. On FreeBSD and OpenBSD, the server incorrectly checked the range of the system date, causing legal values to be rejected. CHANGESET - http://lists.mysql.com/commits/130262