diff options
author | Stephan Bergmann <stephan.bergmann@allotropia.de> | 2024-05-29 10:01:13 +0200 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2024-06-03 14:31:33 +0200 |
commit | 93eb455b7a16612f250498464f3424c9af104b28 (patch) | |
tree | 25286489411381d93dc0778c36504b76b02251c2 /sal | |
parent | 80f3a0b928325774c72c7654699918c39aca4ea3 (diff) |
Properly fix use of uninitialized value
Following up on 66322c5f4a5465c74fa3ceefaa2f76e86a277c16 "Silence warning C4701:
potentially uninitialized local variable" (which had apparently wrongly assumed
that that MSVC warning was a false positive) and
b1a6bd87b803f760f5bf0e2b7bc519b3b2fbfa4e "ofz: Use-of-uninitialized-value in
ImplConvertUtf8ToUnicode", which had demonstrated that this was indeed a true
positive, as per the comment at
<https://gerrit.libreoffice.org/c/core/+/168079/2#message-8b941c986658cb41641c0a317937bd0d3574e0b9>
"ofz: Use-of-uninitialized-value in ImplConvertUtf8ToUnicode", and which could
also be observed with a local patch of
> diff --git a/sal/textenc/tcvtutf8.cxx b/sal/textenc/tcvtutf8.cxx
> index 05290cc204fd..319acd41c627 100644
> --- a/sal/textenc/tcvtutf8.cxx
> +++ b/sal/textenc/tcvtutf8.cxx
> @@ -56,7 +56,7 @@ void ImplResetUtf8ToUnicodeContext(void * pContext)
> {
> if (pContext != nullptr)
> {
> - static_cast< ImplUtf8ToUnicodeContext * >(pContext)->nBytes = int();
> + static_cast< ImplUtf8ToUnicodeContext * >(pContext)->nBytes = 1234;
> static_cast< ImplUtf8ToUnicodeContext * >(pContext)->nShift = -1;
> static_cast< ImplUtf8ToUnicodeContext * >(pContext)->bCheckBom = true;
> }
> @@ -74,7 +74,7 @@ sal_Size ImplConvertUtf8ToUnicode(
> {
> bool bJavaUtf8 = pData != nullptr;
> sal_uInt32 nUtf32 = 0;
> - int nBytes = int();
> + int nBytes = 1234;
> int nShift = -1;
> bool bCheckBom = true;
> sal_uInt32 nInfo = 0;
> @@ -208,6 +208,7 @@ sal_Size ImplConvertUtf8ToUnicode(
> continue;
>
> bad_input:
> + assert(nBytes != 1234);
> switch (sal::detail::textenc::handleBadInputTextToUnicodeConversion(
> false, nBytes != 1, 0, nFlags, &pDestBufPtr, pDestBufEnd,
> &nInfo))
and seeing CppunitTest_sal_rtl CPPUNIT_TEST_NAME=Test::testInvalidUtf8 fail by
hitting that assert.
So initialize nBytes to 1 to make that bad_input scenario call
handleBadInputTextToUnicodeConversion with a bMultiByte=false argument.
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168181
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <stephan.bergmann@allotropia.de>
(cherry picked from commit 73eed7cfe08624227214378c50e2f09c9a868ee3)
Conflicts:
sal/textenc/tcvtutf8.cxx
Change-Id: Ib8a326d497071f4249169e9d4f5871f06cfccbdf
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168185
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Diffstat (limited to 'sal')
-rw-r--r-- | sal/textenc/tcvtutf8.cxx | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sal/textenc/tcvtutf8.cxx b/sal/textenc/tcvtutf8.cxx index 456d77e2f51c..2d73a96a3c50 100644 --- a/sal/textenc/tcvtutf8.cxx +++ b/sal/textenc/tcvtutf8.cxx @@ -56,6 +56,7 @@ void ImplResetUtf8ToUnicodeContext(void * pContext) { if (pContext != nullptr) { + static_cast< ImplUtf8ToUnicodeContext * >(pContext)->nBytes = 1; static_cast< ImplUtf8ToUnicodeContext * >(pContext)->nShift = -1; static_cast< ImplUtf8ToUnicodeContext * >(pContext)->bCheckBom = true; } @@ -73,7 +74,7 @@ sal_Size ImplConvertUtf8ToUnicode( { bool bJavaUtf8 = pData != nullptr; sal_uInt32 nUtf32 = 0; - int nBytes = int(); + int nBytes = 1; int nShift = -1; bool bCheckBom = true; sal_uInt32 nInfo = 0; |