diff options
author | isaacs <i@izs.me> | 2011-09-15 10:38:25 -0700 |
---|---|---|
committer | isaacs <i@izs.me> | 2011-09-15 10:54:08 -0700 |
commit | e06ce7562ca568ca9fa8072fbd554da4d20dc779 (patch) | |
tree | 5973315722c4199dca9ab4e431aa32c5ea80a393 /lib/querystring.js | |
parent | b3af074a0258aa6694bec8eabfc04d2871be57b9 (diff) | |
download | android-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.js | 7 |
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]; |