summaryrefslogtreecommitdiff
path: root/netwerk/base/nsStandardURL.cpp
diff options
context:
space:
mode:
authorValentin Gosu <valentin.gosu@gmail.com>2018-06-05 16:37:34 +0200
committerwolfbeast <mcwerewolf@gmail.com>2018-06-07 15:58:59 +0200
commit5b108e652d31cf3d800a97dbc8d1df524841a73c (patch)
tree2d6b969e3e6ebe7537b6c2a83d2a33ae35a128a8 /netwerk/base/nsStandardURL.cpp
parent3b5a482494a932efe1bf64f85774a85e59bb9642 (diff)
downloaduxp-5b108e652d31cf3d800a97dbc8d1df524841a73c.tar.gz
Sanity-check in nsStandardURL::Deserialize(). r=mayhemer, a=RyanVM
Also add test for faulty nsStandardURL deserialization. See Bug 1392739.
Diffstat (limited to 'netwerk/base/nsStandardURL.cpp')
-rw-r--r--netwerk/base/nsStandardURL.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/netwerk/base/nsStandardURL.cpp b/netwerk/base/nsStandardURL.cpp
index e2a290e4dc..dff4ecbc03 100644
--- a/netwerk/base/nsStandardURL.cpp
+++ b/netwerk/base/nsStandardURL.cpp
@@ -3455,8 +3455,10 @@ FromIPCSegment(const nsACString& aSpec, const ipc::StandardURLSegment& aSegment,
return false;
}
+ CheckedInt<uint32_t> segmentLen = aSegment.position();
+ segmentLen += aSegment.length();
// Make sure the segment does not extend beyond the spec.
- if (NS_WARN_IF(aSegment.position() + aSegment.length() > aSpec.Length())) {
+ if (NS_WARN_IF(!segmentLen.isValid() || segmentLen.value() > aSpec.Length())) {
return false;
}