mariadb/storage/mroonga/vendor/groonga/lib
Monty cc125bebfe Fix all warnings given by UBSAN
The 'special' cases where we disable, suppress or circumvent UBSAN are:
- ref10 source (as here we intentionally do some shifts that UBSAN
  complains about.
- x86 version of optimized int#korr() methods. UBSAN do not like unaligned
  memory access of integers.  Fixed by using byte_order_generic.h when
  compiling with UBSAN
- We use smaller thread stack with ASAN and UBSAN, which forced me to
  disable a few tests that prints the thread stack size.
- Verifying class types does not work for shared libraries. I added
  suppression in mysql-test-run.pl for this case.
- Added '#ifdef WITH_UBSAN' when using integer arithmetic where it is
  safe to have overflows (two cases, in item_func.cc).

Things fixed:
- Don't left shift signed values
  (byte_order_generic.h, mysqltest.c, item_sum.cc and many more)
- Don't assign not non existing values to enum variables.
- Ensure that bool and enum values are properly initialized in
  constructors.  This was needed as UBSAN checks that these types has
  correct values when one copies an object.
  (gcalc_tools.h, ha_partition.cc, item_sum.cc, partition_element.h ...)
- Ensure we do not called handler functions on unallocated objects or
  deleted objects.
  (events.cc, sql_acl.cc).
- Fixed bugs in Item_sp::Item_sp() where we did not call constructor
  on Query_arena object.
- Fixed several cast of objects to an incompatible class!
  (Item.cc, Item_buff.cc, item_timefunc.cc, opt_subselect.cc, sql_acl.cc,
   sql_select.cc ...)
- Ensure we do not do integer arithmetic that causes over or underflows.
  This includes also ++ and -- of integers.
  (Item_func.cc, Item_strfunc.cc, item_timefunc.cc, sql_base.cc ...)
- Added JSON_VALUE_UNITIALIZED to json_value_types and ensure that
  value_type is initialized to this instead of to -1, which is not a valid
  enum value for json_value_types.
- Ensure we do not call memcpy() when second argument could be null.

Other things:

- Changed struct st_position to an OBJECT and added an initialization
  function to it to ensure that we do not copy or use uninitialized
  members. The change to a class was also motived that we used "struct
  st_position" and POSITION randomly trough the code which was
  confusing.
- Notably big rewrite in sql_acl.cc to avoid using deleted objects.
- Changed in sql_partition to use '^' instead of '-'. This is safe as
  the operator is either 0 or 0x8000000000000000ULL.
- Added check for select_nr < INT_MAX in JOIN::build_explain() to
  avoid bug when get_select() could return NULL.
- Reordered elements in POSITION for better alignment.
- Changed sql_test.cc::print_plan() to use pointers instead of objects.
- Fixed bug in find_set() where could could execute '1 << -1'.
- Added variable have_sanitizer, used by mtr.  (This variable was before
  only in 10.5 and up).  It can now have one of two values:
  ASAN or UBSAN.
- Moved ~Archive_share() from ha_archive.cc to ha_archive.h and marked
  it virtual. This was an effort to get UBSAN to work with loaded storage
  engines. I kept the change as the new place is better.
- Added in CONNECT engine COLBLK::SetName(), to get around a wrong cast
  in tabutil.cpp.

Changes that should not be needed but had to be done to suppress warnings
from UBSAN:

- Added static_cast<<uint16_t>> around shift to get rid of a LOT of
  compiler warnings when using UBSAN.
- Had to change some '/' of 2 base integers to shift to get rid of
  some compile time warnings.

Fixes:

MDEV-25505 Assertion `old_flags == ((my_flags & 0x10000U) ? 1 : 0)
fixed (was caused by an old version if this commit).

Reviewed by:
- Json changes: Alexey Botchkov
- Charset changes in ctype-uca.c: Alexander Barkov
- InnoDB changes: Marko Mäkelä
- sql_acl.cc changes: Vicențiu Ciorbaru
- build_explain() changes: Sergey Petrunia
Temporary commit to log changes for UBSAN
2021-05-19 22:54:14 +02:00
..
dat Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
mrb Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
proc Remove compiler warnings regarding signed/unsigned compare in mroonga 2021-05-19 22:27:27 +02:00
ts Fix all warnings given by UBSAN 2021-05-19 22:54:14 +02:00
alloc.c Fix all warnings given by UBSAN 2021-04-20 12:30:09 +03:00
arrow.cpp Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
c_sources.am Update Mroonga to the latest version on 2017-10-16T09:50:49+0900 2017-10-16 09:50:49 +09:00
cache.c Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
CMakeLists.txt cleanup: use predefined CMAKE_DL_LIBS 2020-10-23 13:37:26 +02:00
column.c Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
com.c Fixed compiler warnings from gcc and clang 5.0.1 2020-05-23 12:29:10 +03:00
command.c Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
config.c Fixed compiler warnings from gcc and clang 5.0.1 2020-05-23 12:29:10 +03:00
cpp_sources.am Update Mroonga to the latest version on 2017-10-16T09:50:49+0900 2017-10-16 09:50:49 +09:00
ctx.c Merge 10.1 into 10.2 2019-05-13 17:54:04 +03:00
ctx_impl_mrb.c Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
dat.cpp Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
db.c Merge 10.4 into 10.5 2021-04-21 09:01:01 +03:00
dump.c Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
error.c Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
expr.c Remove compiler warnings regarding signed/unsigned compare in mroonga 2021-05-19 22:27:27 +02:00
expr_code.c Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
expr_executor.c Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
file_lock.c Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
file_reader.c Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
geo.c Remove compiler warnings regarding signed/unsigned compare in mroonga 2021-05-19 22:27:27 +02:00
grn.h Merge 10.2 into 10.3 2019-05-14 17:18:46 +03:00
grn_alloc.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_cache.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_com.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_config.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_ctx.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_ctx_impl.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_ctx_impl_mrb.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_dat.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_db.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_ecmascript.c Update Mroonga to the latest version on 2017-10-10T23:15:25+0900 2017-10-10 23:15:25 +09:00
grn_ecmascript.h Update Mroonga to the latest version on 2017-10-10T23:15:25+0900 2017-10-10 23:15:25 +09:00
grn_ecmascript.lemon Update Mroonga to the latest version on 2017-10-10T23:15:25+0900 2017-10-10 23:15:25 +09:00
grn_error.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_expr.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_expr_code.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_expr_executor.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_file_lock.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_geo.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_hash.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_ii.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_index_column.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_io.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_load.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_logger.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_mrb.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_msgpack.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_nfkc.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_normalizer.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_obj.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_output.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_pat.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_plugin.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_proc.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_raw_string.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_report.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_request_canceler.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_request_timer.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_rset.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_scanner.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_scorer.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_scorers.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_snip.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_store.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_str.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_string.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_time.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_token_cursor.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_tokenizers.h Add a counter to avoid multiple initialization of Groonga mecab tokenizer 2020-05-29 21:48:47 +09:00
grn_ts.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_util.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_window_function.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_window_functions.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
grn_windows.h Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
hash.c Remove compiler warnings regarding signed/unsigned compare in mroonga 2021-05-19 22:27:27 +02:00
icudump.c Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
id.c Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
ii.c Remove compiler warnings regarding signed/unsigned compare in mroonga 2021-05-19 22:27:27 +02:00
index_column.c Remove compiler warnings regarding signed/unsigned compare in mroonga 2021-05-19 22:27:27 +02:00
io.c Fix all warnings given by UBSAN 2021-05-19 22:54:14 +02:00
load.c Remove compiler warnings regarding signed/unsigned compare in mroonga 2021-05-19 22:27:27 +02:00
logger.c Remove compiler warnings regarding signed/unsigned compare in mroonga 2021-05-19 22:27:27 +02:00
Makefile.am Update Mroonga to the latest version on 2017-10-16T09:50:49+0900 2017-10-16 09:50:49 +09:00
metadata.rc.in Update Mroonga to the latest version on 2017-10-10T23:15:25+0900 2017-10-10 23:15:25 +09:00
mrb.c Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
nfkc-custom-rules.txt Update Mroonga to the latest version on 2014-09-21T00:33:44+0900 2014-09-21 00:33:45 +09:00
nfkc.c Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
nfkc.rb Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
nfkc50.c Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
normalizer.c Remove compiler warnings regarding signed/unsigned compare in mroonga 2021-05-19 22:27:27 +02:00
obj.c Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
operator.c Remove compiler warnings regarding signed/unsigned compare in mroonga 2021-05-19 22:27:27 +02:00
output.c Remove compiler warnings regarding signed/unsigned compare in mroonga 2021-05-19 22:27:27 +02:00
pat.c Remove compiler warnings regarding signed/unsigned compare in mroonga 2021-05-19 22:27:27 +02:00
plugin.c Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
proc.c Fixed compiler warnings from gcc and clang 5.0.1 2020-05-23 12:29:10 +03:00
raw_string.c Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
report.c Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
request_canceler.c Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
request_timer.c Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
rset.c Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
scanner.c Remove compiler warnings regarding signed/unsigned compare in mroonga 2021-05-19 22:27:27 +02:00
scorer.c Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
scorers.c Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
snip.c Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
store.c Remove compiler warnings regarding signed/unsigned compare in mroonga 2021-05-19 22:27:27 +02:00
str.c Fix all warnings given by UBSAN 2021-04-20 12:30:09 +03:00
string.c Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
table.c Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
thread.c Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
time.c Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
token_cursor.c Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
token_filter.c Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
tokenizer.c Remove compiler warnings regarding signed/unsigned compare in mroonga 2021-05-19 22:27:27 +02:00
tokenizers.c Remove compiler warnings regarding signed/unsigned compare in mroonga 2021-05-19 22:27:27 +02:00
ts.c Fixed some errors & warnings found by clang 2019-08-08 23:08:23 +03:00
type.c Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
util.c Remove compiler warnings regarding signed/unsigned compare in mroonga 2021-05-19 22:27:27 +02:00
window_function.c Remove compiler warnings regarding signed/unsigned compare in mroonga 2021-05-19 22:27:27 +02:00
window_functions.c Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
windows.c Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00
windows_event_logger.c Merge branch '5.5' into 10.1 2019-05-11 22:19:05 +03:00