From 3a70b4a1be0e790579cc15e9917bd575de8d5315 Mon Sep 17 00:00:00 2001 From: Julien Nabet Date: Sat, 21 Sep 2019 15:22:16 +0200 Subject: tdf#127657: FIREBIRD error in query input param when referred field is integer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I626c8a8869570986d0293cd9070a1ee40ec585dc Reviewed-on: https://gerrit.libreoffice.org/79314 Reviewed-by: Julien Nabet (cherry picked from commit f23e19cd15f14566832befba73fb6bbc1cffb0d7) Reviewed-on: https://gerrit.libreoffice.org/79372 Tested-by: Jenkins Reviewed-by: Caolán McNamara Tested-by: Caolán McNamara --- connectivity/source/drivers/firebird/PreparedStatement.cxx | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'connectivity') diff --git a/connectivity/source/drivers/firebird/PreparedStatement.cxx b/connectivity/source/drivers/firebird/PreparedStatement.cxx index 71a43454f315..4586cc4a3ba4 100644 --- a/connectivity/source/drivers/firebird/PreparedStatement.cxx +++ b/connectivity/source/drivers/firebird/PreparedStatement.cxx @@ -229,6 +229,20 @@ void SAL_CALL OPreparedStatement::setString(sal_Int32 nParameterIndex, assert( pVar->sqlsubtype == static_cast(BlobSubtype::Clob) ); setClob(nParameterIndex, sInput ); break; + case SQL_SHORT: + { + sal_Int32 int32Value = sInput.toInt32(); + if ( (int32Value < std::numeric_limits::min()) || + (int32Value > std::numeric_limits::max()) ) + { + ::dbtools::throwSQLException( + "Value out of range for SQL_SHORT type", + ::dbtools::StandardSQLState::INVALID_SQL_DATA_TYPE, + *this); + } + setShort(nParameterIndex, int32Value); + break; + } default: ::dbtools::throwSQLException( "Incorrect type for setString", -- cgit