diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2020-02-07 15:34:33 +0100 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2020-02-07 21:27:00 +0100 |
commit | 4c0394461af4d6bcba059161113abffbb484efe8 (patch) | |
tree | 559fba9b9fb3ced1ff703ad9937a4e54a1ceeb99 /svl/source/misc | |
parent | f0decd9c932b50eddeecd49a6ee44182e78be938 (diff) |
tdf#130501: Fix off-by-one error in URIHelper::resolveIdnaHost
Change-Id: Ibc231308d0fc93085933ae7d80dc8c4b2699fe02
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/88204
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Diffstat (limited to 'svl/source/misc')
-rw-r--r-- | svl/source/misc/urihelper.cxx | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/svl/source/misc/urihelper.cxx b/svl/source/misc/urihelper.cxx index 62177ac79e25..127134d1ab72 100644 --- a/svl/source/misc/urihelper.cxx +++ b/svl/source/misc/urihelper.cxx @@ -742,12 +742,14 @@ OUString URIHelper::resolveIdnaHost(OUString const & url) { if (auth.isEmpty()) return url; sal_Int32 hostStart = auth.indexOf('@') + 1; - sal_Int32 hostEnd = auth.getLength() - 1; - while (hostEnd > hostStart && rtl::isAsciiDigit(auth[hostEnd])) { + sal_Int32 hostEnd = auth.getLength(); + while (hostEnd > hostStart && rtl::isAsciiDigit(auth[hostEnd - 1])) { --hostEnd; } - if (!(hostEnd > hostStart && auth[hostEnd] == ':')) { - hostEnd = auth.getLength() - 1; + if (hostEnd > hostStart && auth[hostEnd - 1] == ':') { + --hostEnd; + } else { + hostEnd = auth.getLength(); } auto asciiOnly = true; for (auto i = hostStart; i != hostEnd; ++i) { |