summaryrefslogtreecommitdiff
path: root/share
diff options
context:
space:
mode:
authorChristopher Lenz <cmlenz@apache.org>2008-06-23 15:23:32 +0000
committerChristopher Lenz <cmlenz@apache.org>2008-06-23 15:23:32 +0000
commit3164ddedffaadf26837c9a0a9bf366048b230b54 (patch)
treef61d34fcf618f413812169418ca1b85024cc9113 /share
parent45c97d183c73e0058265f2de77416a2f215edd93 (diff)
Seal the document in Javascript view functions in 'deep' mode so that it's not possible to modify values in nested arrays and objects.
git-svn-id: https://svn.apache.org/repos/asf/incubator/couchdb/trunk@670653 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'share')
-rw-r--r--share/server/main.js2
-rw-r--r--share/www/script/couch_tests.js12
2 files changed, 10 insertions, 4 deletions
diff --git a/share/server/main.js b/share/server/main.js
index 9773cf6c..05615ccd 100644
--- a/share/server/main.js
+++ b/share/server/main.js
@@ -74,7 +74,7 @@ while (cmd = eval(readline())) {
// ]
//
var doc = cmd[1];
- seal(doc); // seal to prevent map functions from changing doc
+ seal(doc, true); // seal to prevent map functions from changing doc
var buf = [];
for (var i = 0; i < funs.length; i++) {
map_results = [];
diff --git a/share/www/script/couch_tests.js b/share/www/script/couch_tests.js
index cc770a9b..e09569c2 100644
--- a/share/www/script/couch_tests.js
+++ b/share/www/script/couch_tests.js
@@ -871,12 +871,18 @@ var tests = {
db.createDb();
if (debug) debugger;
- var docs = makeDocs(1, 2);
- T(db.bulkSave(docs).ok);
+ var doc = {integer: 1, string: "1", array: [1, 2, 3]};
+ T(db.save(doc).ok);
// make sure that attempting to change the document throws an error
var results = db.query(function(doc) {
- doc._id = "foo";
+ doc.integer = 2;
+ emit(null, doc);
+ });
+ T(results.total_rows == 0);
+
+ var results = db.query(function(doc) {
+ doc.array[0] = 0;
emit(null, doc);
});
T(results.total_rows == 0);