mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-03 14:33:32 +03:00 
			
		
		
		
	Bug#57512 str_to_date crash...
str_to_date function should only try to generate a warning for invalid input strings, not when input value is NULL. In latter case, val_str() of input argument will return a nil pointer. Trying to generate a warning using this pointer lead to a segmentation fault. Solution: Only generate warning when pointer to input string is non-nil. mysql-test/r/func_time.result: Added test case for Bug#57512 mysql-test/t/func_time.test: Added test case for Bug#57512 sql/item_timefunc.cc: Skip generating warning when pointer to input string is nil since this implies that input argument was NULL.
This commit is contained in:
		@@ -1327,3 +1327,12 @@ SELECT * FROM t1 WHERE date_date <= addtime(date_add("2000-1-1", INTERVAL "1:1:1
 | 
				
			|||||||
date_date
 | 
					date_date
 | 
				
			||||||
DROP TABLE t1;
 | 
					DROP TABLE t1;
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
 | 
					# Bug#57512 str_to_date crash...
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					SELECT WEEK(STR_TO_DATE(NULL,0));
 | 
				
			||||||
 | 
					WEEK(STR_TO_DATE(NULL,0))
 | 
				
			||||||
 | 
					NULL
 | 
				
			||||||
 | 
					SELECT SUBDATE(STR_TO_DATE(NULL,0), INTERVAL 1 HOUR);
 | 
				
			||||||
 | 
					SUBDATE(STR_TO_DATE(NULL,0), INTERVAL 1 HOUR)
 | 
				
			||||||
 | 
					NULL
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -842,5 +842,13 @@ INSERT INTO t1 VALUES ('2008-01-03 00:00:00'), ('2008-01-03 00:00:00');
 | 
				
			|||||||
SELECT * FROM t1 WHERE date_date >= subtime(now(), "00:30:00");
 | 
					SELECT * FROM t1 WHERE date_date >= subtime(now(), "00:30:00");
 | 
				
			||||||
SELECT * FROM t1 WHERE date_date <= addtime(date_add("2000-1-1", INTERVAL "1:1:1" HOUR_SECOND), "00:20:00");
 | 
					SELECT * FROM t1 WHERE date_date <= addtime(date_add("2000-1-1", INTERVAL "1:1:1" HOUR_SECOND), "00:20:00");
 | 
				
			||||||
DROP TABLE t1;
 | 
					DROP TABLE t1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					--echo #
 | 
				
			||||||
 | 
					--echo # Bug#57512 str_to_date crash...
 | 
				
			||||||
 | 
					--echo #
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SELECT WEEK(STR_TO_DATE(NULL,0));
 | 
				
			||||||
 | 
					SELECT SUBDATE(STR_TO_DATE(NULL,0), INTERVAL 1 HOUR);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
--echo #
 | 
					--echo #
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3465,7 +3465,7 @@ bool Item_func_str_to_date::get_date(MYSQL_TIME *ltime, uint fuzzy_date)
 | 
				
			|||||||
  return 0;
 | 
					  return 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
null_date:
 | 
					null_date:
 | 
				
			||||||
  if (fuzzy_date & TIME_NO_ZERO_DATE)
 | 
					  if (val && (fuzzy_date & TIME_NO_ZERO_DATE))
 | 
				
			||||||
  {
 | 
					  {
 | 
				
			||||||
    char buff[128];
 | 
					    char buff[128];
 | 
				
			||||||
    strmake(buff, val->ptr(), min(val->length(), sizeof(buff)-1));
 | 
					    strmake(buff, val->ptr(), min(val->length(), sizeof(buff)-1));
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user