mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
Bug#17296644 CONV(X, INT_MIN, INT_MIN) SEGFAULTS THE SERVER
Do not call abs(INT_MIN) as the result is undefined.
This commit is contained in:
parent
90ecf4eba3
commit
a50170dd0c
2 changed files with 7 additions and 1 deletions
|
@ -147,6 +147,10 @@ IF(UNIX)
|
|||
|
||||
SET(CMAKE_REQUIRED_LIBRARIES
|
||||
${LIBM} ${LIBNSL} ${LIBBIND} ${LIBCRYPT} ${LIBSOCKET} ${LIBDL} ${CMAKE_THREAD_LIBS_INIT} ${LIBRT})
|
||||
# Need explicit pthread for gcc -fsanitize=address
|
||||
IF(CMAKE_USE_PTHREADS_INIT AND CMAKE_C_FLAGS MATCHES "-fsanitize=")
|
||||
SET(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} pthread)
|
||||
ENDIF()
|
||||
|
||||
LIST(LENGTH CMAKE_REQUIRED_LIBRARIES required_libs_length)
|
||||
IF(${required_libs_length} GREATER 0)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -2928,7 +2928,9 @@ String *Item_func_conv::val_str(String *str)
|
|||
int to_base= (int) args[2]->val_int();
|
||||
int err;
|
||||
|
||||
// Note that abs(INT_MIN) is undefined.
|
||||
if (args[0]->null_value || args[1]->null_value || args[2]->null_value ||
|
||||
from_base == INT_MIN || to_base == INT_MIN ||
|
||||
abs(to_base) > 36 || abs(to_base) < 2 ||
|
||||
abs(from_base) > 36 || abs(from_base) < 2 || !(res->length()))
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue