From ed001f18a49301f51cab3e3e5d5c9ade212bd19f Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 11 Jul 2006 13:06:29 -0400 Subject: Bug#20729: Bad date_format() call makes mysql server crash The problem is that the author used the wrong function to send a warning to the user about truncation of data. push_warning() takes a constant string and push_warning_printf() takes a format and variable arguments to fill it. Since the string we were complaining about contains percent characters, the printf() code interprets the "%Y" et c. that the user sends. That's wrong, and often causes a crash, especially if the date mentions seconds, "%s". A alternate fix would be to use push_warning_printf(..., "%s", warn_buff) . mysql-test/r/date_formats.result: Test that an invalid date doesn't crash the server. We should get a warning back instead of a dead socket. mysql-test/t/date_formats.test: Test that an invalid date doesn't crash the server. We should get a warning back instead of a dead socket. sql/time.cc: Don't try to use warn_buf as the start of a varible arguement list to send to a warning-formatted my_vsnprintf() . --- mysql-test/r/date_formats.result | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'mysql-test/r/date_formats.result') diff --git a/mysql-test/r/date_formats.result b/mysql-test/r/date_formats.result index 24abdfcf148..04ada125847 100644 --- a/mysql-test/r/date_formats.result +++ b/mysql-test/r/date_formats.result @@ -509,3 +509,9 @@ TIME_FORMAT("24:00:00", '%l %p') SELECT TIME_FORMAT("25:00:00", '%l %p'); TIME_FORMAT("25:00:00", '%l %p') 1 AM +SELECT DATE_FORMAT('%Y-%m-%d %H:%i:%s', 1151414896); +DATE_FORMAT('%Y-%m-%d %H:%i:%s', 1151414896) +NULL +Warnings: +Warning 1292 Truncated incorrect datetime value: '%Y-%m-%d %H:%i:%s' +"End of 4.1 tests" -- cgit v1.2.1