diff options
author | ramil/ram@mysql.com/myoffice.izhnet.ru <> | 2006-07-12 11:38:11 +0500 |
---|---|---|
committer | ramil/ram@mysql.com/myoffice.izhnet.ru <> | 2006-07-12 11:38:11 +0500 |
commit | 794fe3435c865a6d3580e4ad83b8469a7b63b81d (patch) | |
tree | 4d9763aadeb02a1ab65d1606d49622eea1ad9360 /sql-common/my_time.c | |
parent | 8b57568a5fa8c3f52cf1ca1d820a1fc6e14fd7c4 (diff) | |
download | mariadb-git-794fe3435c865a6d3580e4ad83b8469a7b63b81d.tar.gz |
Fix for bug #19370: DateTime datatype in MySQL has two bugs in it
Diffstat (limited to 'sql-common/my_time.c')
-rw-r--r-- | sql-common/my_time.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/sql-common/my_time.c b/sql-common/my_time.c index c9d39260761..93bf23ed284 100644 --- a/sql-common/my_time.c +++ b/sql-common/my_time.c @@ -69,6 +69,7 @@ uint calc_days_in_year(uint year) Here we assume that year and month is ok ! If month is 0 we allow any date. (This only happens if we allow zero date parts in str_to_datetime()) + Disallow dates with zero year and non-zero month and/or day. RETURN 0 ok @@ -85,7 +86,8 @@ static my_bool check_date(const MYSQL_TIME *ltime, my_bool not_zero_date, (!(flags & TIME_INVALID_DATES) && ltime->month && ltime->day > days_in_month[ltime->month-1] && (ltime->month != 2 || calc_days_in_year(ltime->year) != 366 || - ltime->day != 29))) + ltime->day != 29)) || + (ltime->year == 0 && (ltime->month != 0 || ltime->day != 0))) { *was_cut= 2; return TRUE; |