142e8ccd3a
...that take a pointer and a length, and where it should be OK that the pointer
is null if the length is zero. Those rtl_uString_* functions are targets of
OUString member functions that take std::[u16]string_view arguments, and
19926ed35e
"loplugin:stringview: Flag empty string
converted to string view" (which changed some call sites to pass in default-
constructed std::[u16]string_view, for which data() returns null) revealed that
those rtl_uString_* functions were not prepared for such input.
(The guardings of memcpy are necessary because memcpy still requires its pointer
arguments to be non-null, even if the corresponding length is zero.)
The new sal/qa/rtl/strings/test_strings_defaultstringview.cxx systematically
tests all O[U]String[Buffer] member functions taking std::[u16]string_view
arguments. It revealed one further issue in
IMPL_RTL_STRNAME(compare_WithLength), where UBSan reported a
nullptr-with-nonzero-offset
> sal/rtl/strtmpl.cxx:149:9: runtime error: applying non-zero offset 18446744073709551614 to null pointer
Also, rtl_uString_newReplaceFirstUtf16LUtf16L was found to lack a check for its
`from` argument to be non-null.
Change-Id: I6a7a712570f7d1e8d52097208c8a43a5a24797af
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/106295
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
72 lines
2.5 KiB
Makefile
72 lines
2.5 KiB
Makefile
# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
|
|
#
|
|
# This file is part of the LibreOffice project.
|
|
#
|
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
#
|
|
|
|
$(eval $(call gb_CppunitTest_CppunitTest,sal_rtl))
|
|
|
|
$(eval $(call gb_CppunitTest_add_exception_objects,sal_rtl,\
|
|
sal/qa/ByteSequence/ByteSequence \
|
|
sal/qa/OStringBuffer/rtl_OStringBuffer \
|
|
sal/qa/rtl/alloc/rtl_alloc \
|
|
sal/qa/rtl/bootstrap/expand \
|
|
sal/qa/rtl/cipher/rtl_cipher \
|
|
sal/qa/rtl/crc32/rtl_crc32 \
|
|
sal/qa/rtl/digest/rtl_digest \
|
|
sal/qa/rtl/doublelock/rtl_doublelocking \
|
|
sal/qa/rtl/locale/rtl_locale \
|
|
sal/qa/rtl/math/test-rtl-math \
|
|
sal/qa/rtl/oustringbuffer/test_oustringbuffer_appendchar \
|
|
sal/qa/rtl/oustringbuffer/test_oustringbuffer_appenduninitialized \
|
|
sal/qa/rtl/oustringbuffer/test_oustringbuffer_assign \
|
|
sal/qa/rtl/oustringbuffer/test_oustringbuffer_tostring \
|
|
sal/qa/rtl/oustringbuffer/test_oustringbuffer_utf32 \
|
|
sal/qa/rtl/oustring/rtl_OUString2 \
|
|
sal/qa/rtl/process/rtl_Process \
|
|
sal/qa/rtl/random/rtl_random \
|
|
sal/qa/rtl/ref/rtl_ref \
|
|
sal/qa/rtl/strings/nonconstarray \
|
|
sal/qa/rtl/strings/test_strings_replace \
|
|
sal/qa/rtl/strings/test_strings_defaultstringview \
|
|
sal/qa/rtl/strings/test_ostring \
|
|
sal/qa/rtl/strings/test_ostring_concat \
|
|
sal/qa/rtl/strings/test_ostring_stringliterals \
|
|
sal/qa/rtl/strings/test_oustring_compare \
|
|
sal/qa/rtl/strings/test_oustring_concat \
|
|
sal/qa/rtl/strings/test_oustring_convert \
|
|
sal/qa/rtl/strings/test_oustring_endswith \
|
|
sal/qa/rtl/strings/test_oustring_startswith \
|
|
sal/qa/rtl/strings/test_oustring_stringliterals \
|
|
sal/qa/rtl/strings/test_strings_toint \
|
|
sal/qa/rtl/strings/test_strings_valuex \
|
|
sal/qa/rtl/textenc/rtl_tencinfo \
|
|
sal/qa/rtl/textenc/rtl_textcvt \
|
|
sal/qa/rtl/uri/rtl_Uri \
|
|
sal/qa/rtl/uri/rtl_testuri \
|
|
sal/qa/rtl/uuid/rtl_Uuid \
|
|
))
|
|
|
|
$(eval $(call gb_CppunitTest_use_libraries,sal_rtl,\
|
|
sal \
|
|
))
|
|
|
|
$(eval $(call gb_CppunitTest_set_include,sal_rtl,\
|
|
-I$(SRCDIR)/sal/qa/inc \
|
|
$$(INCLUDE) \
|
|
))
|
|
|
|
# The test uses O(U)String capabilities that dlopen this lib:
|
|
$(call gb_CppunitTest_get_target,sal_rtl) : \
|
|
$(call gb_Library_get_target,sal_textenc)
|
|
|
|
$(eval $(call gb_CppunitTest_use_external,sal_rtl,boost_headers))
|
|
|
|
ifeq ($(ENABLE_CIPHER_OPENSSL_BACKEND),TRUE)
|
|
$(eval $(call gb_CppunitTest_add_defs,sal_rtl,-DLIBO_CIPHER_OPENSSL_BACKEND))
|
|
endif
|
|
|
|
# vim: set noet sw=4 ts=4:
|