diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2017-03-21 22:50:15 +0100 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2017-03-22 09:00:57 +0000 |
commit | 7778d9f51bd1f4d086cafe95995406c3157afb89 (patch) | |
tree | 9a43660947b78d9f714c45e1be48ef46dd0d082e /tools/source/inet/inetmime.cxx | |
parent | 02bccbe0d59e50a7fd987c81c4d15b2fd4d24538 (diff) |
Prevent calls to rtl/character.hxx functions with (signed) char arguments
...that would implicitly be sign extended (for plain char only if it is signed),
so non-ASCII char values would trigger the isUnicodeCodePoint assert.
Change-Id: Iaf8024ad509e64525558e882fe3fd078cfb4ea91
Reviewed-on: https://gerrit.libreoffice.org/35523
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Diffstat (limited to 'tools/source/inet/inetmime.cxx')
-rw-r--r-- | tools/source/inet/inetmime.cxx | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/tools/source/inet/inetmime.cxx b/tools/source/inet/inetmime.cxx index ad15355f19de..27f120a360df 100644 --- a/tools/source/inet/inetmime.cxx +++ b/tools/source/inet/inetmime.cxx @@ -892,7 +892,9 @@ bool equalIgnoreCase(const sal_Char * pBegin1, while (*pString2 != 0) if (pBegin1 == pEnd1 - || rtl::toAsciiUpperCase(*pBegin1++) != rtl::toAsciiUpperCase(*pString2++)) + || (rtl::toAsciiUpperCase(static_cast<unsigned char>(*pBegin1++)) + != rtl::toAsciiUpperCase( + static_cast<unsigned char>(*pString2++)))) return false; return pBegin1 == pEnd1; } @@ -1154,7 +1156,9 @@ bool INetMIME::equalIgnoreCase(const sal_Unicode * pBegin1, while (*pString2 != 0) if (pBegin1 == pEnd1 - || rtl::toAsciiUpperCase(*pBegin1++) != rtl::toAsciiUpperCase(*pString2++)) + || (rtl::toAsciiUpperCase(*pBegin1++) + != rtl::toAsciiUpperCase( + static_cast<unsigned char>(*pString2++)))) return false; return pBegin1 == pEnd1; } @@ -1317,7 +1321,9 @@ OUString INetMIME::decodeHeaderFieldBody(const OString& rBody) default: if (pLanguageBegin != nullptr - && (!rtl::isAsciiAlpha(cChar) || ++nAlphaCount > 8)) + && (!rtl::isAsciiAlpha( + static_cast<unsigned char>(cChar)) + || ++nAlphaCount > 8)) pLanguageBegin = nullptr; break; } |