summaryrefslogtreecommitdiff
path: root/lib/querystring.js
diff options
context:
space:
mode:
authorisaacs <i@izs.me>2011-09-15 10:38:25 -0700
committerisaacs <i@izs.me>2011-09-15 10:54:08 -0700
commite06ce7562ca568ca9fa8072fbd554da4d20dc779 (patch)
tree5973315722c4199dca9ab4e431aa32c5ea80a393 /lib/querystring.js
parentb3af074a0258aa6694bec8eabfc04d2871be57b9 (diff)
downloadandroid-node-v8-e06ce7562ca568ca9fa8072fbd554da4d20dc779.tar.gz
android-node-v8-e06ce7562ca568ca9fa8072fbd554da4d20dc779.tar.bz2
android-node-v8-e06ce7562ca568ca9fa8072fbd554da4d20dc779.zip
Fix #1707 hasOwnProperty usage
If hasOwnProperty is overridden, then calling `obj.hasOwnProperty(prop)` can fail. Any time a dictionary of user-generated items is built, we cannot rely on hasOwnProperty being safe, so must call it from the Object.prototype explicitly.
Diffstat (limited to 'lib/querystring.js')
-rw-r--r--lib/querystring.js7
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/querystring.js b/lib/querystring.js
index e8796e4d74..58b90250c4 100644
--- a/lib/querystring.js
+++ b/lib/querystring.js
@@ -25,7 +25,10 @@ var QueryString = exports;
var urlDecode = process.binding('http_parser').urlDecode;
-function hOP(obj, prop) {
+// If obj.hasOwnProperty has been overridden, then calling
+// obj.hasOwnProperty(prop) will break.
+// See: https://github.com/joyent/node/issues/1707
+function hasOwnProperty(obj, prop) {
return Object.prototype.hasOwnProperty.call(obj, prop);
}
@@ -171,7 +174,7 @@ QueryString.parse = QueryString.decode = function(qs, sep, eq) {
var k = QueryString.unescape(x[0], true);
var v = QueryString.unescape(x.slice(1).join(eq), true);
- if (!hOP(obj, k)) {
+ if (!hasOwnProperty(obj, k)) {
obj[k] = v;
} else if (!Array.isArray(obj[k])) {
obj[k] = [obj[k], v];