mirror of
https://github.com/MariaDB/server.git
synced 2026-05-15 03:17:20 +02:00
Bug#19006: 4.0 valgrind problems (in test func_str)
On exactly-sized Strings, the String::c_ptr() function peeked beyond the end of the buffer, possibly into unititialized space to see whether the buffer was NUL-terminated. In a place that did peek improperly, we now use a c_ptr_safe() function, which doesn't peek where it shouldn't. client/sql_string.h: Back-port String::c_ptr_safe(). sql/item_func.h: Describe side-effect behavior. sql/item_strfunc.cc: Use the "_safe" version of c_ptr to avoid looking for a terminating NUL character outside the initialized memory area. Valgrind hates it when one does that, and it theoretically could lead to a SEGV. sql/sql_string.h: Back-port String::c_ptr_safe().
This commit is contained in:
parent
c90f464d8f
commit
861096a58f
4 changed files with 22 additions and 3 deletions
|
|
@ -120,7 +120,10 @@ public:
|
|||
{
|
||||
return (null_value=args[0]->get_time(ltime));
|
||||
}
|
||||
bool is_null() { (void) val_int(); return null_value; }
|
||||
bool is_null() {
|
||||
(void) val_int(); /* Discard result. It sets null_value as side-effect. */
|
||||
return null_value;
|
||||
}
|
||||
friend class udf_handler;
|
||||
unsigned int size_of() { return sizeof(*this);}
|
||||
Field *tmp_table_field(TABLE *t_arg);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue