diff options
author | unknown <oystein.grovlen@sun.com> | 2010-05-28 17:30:39 +0200 |
---|---|---|
committer | unknown <oystein.grovlen@sun.com> | 2010-05-28 17:30:39 +0200 |
commit | 229cc4e191346ecd93ae7154c9e9b4f8f693b56c (patch) | |
tree | 33c6a6b8ab8950c484744de565554274b321c321 /strings | |
parent | ba36de4f2e429abfbaf968939e6ce57045488ef9 (diff) | |
download | mariadb-git-229cc4e191346ecd93ae7154c9e9b4f8f693b56c.tar.gz |
Bug#52168 decimal casting catastrophes: crashes and valgrind errors on simple casts
The problem is that if a NULL is stored in an Item_cache_decimal object,
the associated my_decimal object is not initialized. However, it is still
accessed when val_int() is called. The fix is to check for null_value
within val_int(), and return without accessing the my_decimal object when
the cached value is NULL.
Bug#52122 reports the same issue for val_real(), and this patch also includes
fixes for val_real() and val_str() and corresponding test cases from that
bug report.
Also, NULL is returned from val_decimal() when value is null. This will
avoid that callers access an uninitialized my_decimal object.
Made similar changes to all other Item_cache classes. Now all val_*
methods should return a well defined value when actual value is NULL.
mysql-test/r/type_decimal.result:
Updated result file with test cases for Bug#52168 and Bug#52122.
mysql-test/t/type_decimal.test:
Added test cases for Bug#52168 and Bug#52122.
sql/item.cc:
In Item_cache_*::val_* methods, return a well defined value
when actual value is NULL.
This is especially important for Item_cache_decimal since
otherwise one risk accessing an uninitialized my_decimal object.
sql/item.h:
Added method Item_cache::has_value() which returns TRUE if cache
object contains a non-null value.
Diffstat (limited to 'strings')
0 files changed, 0 insertions, 0 deletions