diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2019-01-18 15:54:12 +0100 |
---|---|---|
committer | Aron Budea <aron.budea@collabora.com> | 2019-02-06 02:42:19 +0100 |
commit | 2c652561e7637d662f94157259fddcd666984751 (patch) | |
tree | 22c556b5c6f072a5059ac43a9bdd585f43eb5945 /connectivity | |
parent | f98689833179403ac5ed3db8e1ce1db1a64fbe7e (diff) |
Avoid -Werror=format-{overflow,truncation}=
...as emitted by at least GCC 8.2 with --enable-optimized, by making the buffers
large enough for the (hypothetical) largest values of the various date/time
components
Reviewed-on: https://gerrit.libreoffice.org/66618
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
(cherry picked from commit 113536e974d7ebbbc484b0ef40406f9b4d14e511)
Change-Id: I82e9b08fa099546b2d6f29c702e1440df9e6c6e0
Diffstat (limited to 'connectivity')
-rw-r--r-- | connectivity/source/drivers/dbase/DTable.cxx | 13 | ||||
-rw-r--r-- | connectivity/source/drivers/jdbc/ConnectionLog.cxx | 9 |
2 files changed, 12 insertions, 10 deletions
diff --git a/connectivity/source/drivers/dbase/DTable.cxx b/connectivity/source/drivers/dbase/DTable.cxx index 22d9f441b1f0..80fbebc6d608 100644 --- a/connectivity/source/drivers/dbase/DTable.cxx +++ b/connectivity/source/drivers/dbase/DTable.cxx @@ -1827,16 +1827,17 @@ bool ODbaseTable::UpdateBuffer(OValueRefVector& rRow, const OValueRefRow& pOrgRo aDate = ::dbtools::DBTypeConversion::toDate(thisColVal.getDouble()); else aDate = thisColVal; - char s[9]; + char s[sizeof("-327686553565535")]; + // reserve enough space for hypothetical max length snprintf(s, sizeof(s), "%04d%02d%02d", - (int)aDate.Year, - (int)aDate.Month, - (int)aDate.Day); + static_cast<sal_Int32>(aDate.Year), + static_cast<sal_uInt32>(aDate.Month), + static_cast<sal_uInt32>(aDate.Day)); - // Exactly 8 bytes to copy: - strncpy(pData,s,sizeof s - 1); + // Exactly 8 bytes to copy (even if s could hypothetically be longer): + memcpy(pData,s,8); } break; case DataType::INTEGER: { diff --git a/connectivity/source/drivers/jdbc/ConnectionLog.cxx b/connectivity/source/drivers/jdbc/ConnectionLog.cxx index 3218c0dc2bdc..a8abf0d82e8a 100644 --- a/connectivity/source/drivers/jdbc/ConnectionLog.cxx +++ b/connectivity/source/drivers/jdbc/ConnectionLog.cxx @@ -98,11 +98,12 @@ namespace comphelper { namespace log { namespace convert OUString convertLogArgToString( const DateTime& _rDateTime ) { - char buffer[ 30 ]; + char buffer[ sizeof("-32768-65535-65535 65535:65535:65535.4294967295") ]; + // reserve enough space for hypothetical max length const size_t buffer_size = sizeof( buffer ); - snprintf( buffer, buffer_size, "%04i-%02i-%02i %02i:%02i:%02i.%09i", - (int)_rDateTime.Year, (int)_rDateTime.Month, (int)_rDateTime.Day, - (int)_rDateTime.Hours, (int)_rDateTime.Minutes, (int)_rDateTime.Seconds, (int)_rDateTime.NanoSeconds ); + snprintf( buffer, buffer_size, "%04" SAL_PRIdINT32 "-%02" SAL_PRIuUINT32 "-%02" SAL_PRIuUINT32 " %02" SAL_PRIuUINT32 ":%02" SAL_PRIuUINT32 ":%02" SAL_PRIuUINT32 ".%09" SAL_PRIuUINT32, + static_cast<sal_Int32>(_rDateTime.Year), static_cast<sal_uInt32>(_rDateTime.Month), static_cast<sal_uInt32>(_rDateTime.Day), + static_cast<sal_uInt32>(_rDateTime.Hours), static_cast<sal_uInt32>(_rDateTime.Minutes), static_cast<sal_uInt32>(_rDateTime.Seconds), _rDateTime.NanoSeconds ); return OUString::createFromAscii( buffer ); } |