[tbb-commits] [tor-browser/esr24] Bug 991471 - Fix offset when setting host on URL. r=mcmanus, a=abillings
mikeperry at torproject.org
mikeperry at torproject.org
Fri Aug 29 05:26:39 UTC 2014
commit 6f92a1feadf46e50286dfed67835e92038196dc2
Author: Valentin Gosu <valentin.gosu at gmail.com>
Date: Thu Apr 10 10:23:04 2014 -0400
Bug 991471 - Fix offset when setting host on URL. r=mcmanus, a=abillings
---
netwerk/base/src/nsStandardURL.cpp | 28 ++++++++++++++++++++++------
1 file changed, 22 insertions(+), 6 deletions(-)
diff --git a/netwerk/base/src/nsStandardURL.cpp b/netwerk/base/src/nsStandardURL.cpp
index 2216580..d97718a 100644
--- a/netwerk/base/src/nsStandardURL.cpp
+++ b/netwerk/base/src/nsStandardURL.cpp
@@ -1476,7 +1476,14 @@ nsStandardURL::SetHost(const nsACString &input)
len = flat.Length();
if (mHost.mLen < 0) {
- mHost.mPos = mAuthority.mPos;
+ int port_length = 0;
+ if (mPort != -1) {
+ nsAutoCString buf;
+ buf.Assign(':');
+ buf.AppendInt(mPort);
+ port_length = buf.Length();
+ }
+ mHost.mPos = mAuthority.mPos + mAuthority.mLen - port_length;
mHost.mLen = 0;
}
@@ -1520,7 +1527,7 @@ nsStandardURL::SetPort(int32_t port)
nsAutoCString buf;
buf.Assign(':');
buf.AppendInt(port);
- mSpec.Insert(buf, mHost.mPos + mHost.mLen);
+ mSpec.Insert(buf, mAuthority.mPos + mAuthority.mLen);
mAuthority.mLen += buf.Length();
ShiftFromPath(buf.Length());
}
@@ -1528,9 +1535,14 @@ nsStandardURL::SetPort(int32_t port)
// Don't allow mPort == mDefaultPort
port = -1;
+ // compute length of the current port
+ nsAutoCString buf;
+ buf.Assign(':');
+ buf.AppendInt(mPort);
+
// need to remove the port number from the URL spec
- uint32_t start = mHost.mPos + mHost.mLen;
- int32_t lengthToCut = mPath.mPos - start;
+ uint32_t start = mAuthority.mPos + mAuthority.mLen - buf.Length();
+ int32_t lengthToCut = buf.Length();
mSpec.Cut(start, lengthToCut);
mAuthority.mLen -= lengthToCut;
ShiftFromPath(-lengthToCut);
@@ -1538,9 +1550,13 @@ nsStandardURL::SetPort(int32_t port)
else {
// need to replace the existing port
nsAutoCString buf;
+ buf.Assign(':');
+ buf.AppendInt(mPort);
+ uint32_t start = mAuthority.mPos + mAuthority.mLen - buf.Length();
+ uint32_t length = buf.Length();
+
+ buf.Assign(':');
buf.AppendInt(port);
- uint32_t start = mHost.mPos + mHost.mLen + 1;
- uint32_t length = mPath.mPos - start;
mSpec.Replace(start, length, buf);
if (buf.Length() != length) {
mAuthority.mLen += buf.Length() - length;
More information about the tbb-commits
mailing list