diff options
author | Caolán McNamara <caolanm@redhat.com> | 2014-08-11 11:27:53 +0100 |
---|---|---|
committer | David Tardon <dtardon@redhat.com> | 2014-08-11 10:43:17 +0000 |
commit | 712a286d1d430f91148600b52b6fc3d03881cf78 (patch) | |
tree | b8a2cff643dc28109e8a670d58e34410d5c92f5a /xmlhelp | |
parent | 9f149784501b6c867f6136d94d438ad926964efd (diff) |
Resolves: fdo#82025 use strlen instead of stored length byte
Change-Id: I58cf2391d7bf2480cd12d2b1b4cf73f346f4f95f
(cherry picked from commit ad40561d13e004ca4c532afb406675eea3c6a663)
Reviewed-on: https://gerrit.libreoffice.org/10864
Reviewed-by: David Tardon <dtardon@redhat.com>
Tested-by: David Tardon <dtardon@redhat.com>
Diffstat (limited to 'xmlhelp')
-rw-r--r-- | xmlhelp/source/cxxhelp/provider/urlparameter.hxx | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/xmlhelp/source/cxxhelp/provider/urlparameter.hxx b/xmlhelp/source/cxxhelp/provider/urlparameter.hxx index ba8f29c820ff..05bca6d8451f 100644 --- a/xmlhelp/source/cxxhelp/provider/urlparameter.hxx +++ b/xmlhelp/source/cxxhelp/provider/urlparameter.hxx @@ -43,7 +43,6 @@ namespace chelp { { } - OUString getHash() { if( m_ptr ) @@ -88,11 +87,15 @@ namespace chelp { if( ! m_ptr ) return OUString(); - sal_Int32 sizeOfTitle = - ( sal_Int32 ) m_ptr[ 2 + m_ptr[0] + ( sal_Int32 ) m_ptr[ 1+ ( sal_Int32 ) m_ptr[0] ] ]; - return OUString( m_ptr + 3 + m_ptr[0] + ( sal_Int32 ) m_ptr[ 1+ ( sal_Int32 ) m_ptr[0] ], - sizeOfTitle, - RTL_TEXTENCODING_UTF8 ); + //fdo#82025 - use strlen instead of stored length byte to determine string len + //There is a one byte length field at m_ptr[2 + m_ptr[0] + m_ptr[1 + //+ m_ptr[0]]] but by default sal_Char is signed so anything larger + //than 127 defaults to a negative value, casting it would allow up + //to 255 but instead make use of the null termination to avoid + //running into a later problem with strings >= 255 + const sal_Char* pTitle = m_ptr + 3 + m_ptr[0] + ( sal_Int32 ) m_ptr[ 1+ ( sal_Int32 ) m_ptr[0] ]; + + return OUString(pTitle, rtl_str_getLength(pTitle), RTL_TEXTENCODING_UTF8); } |