summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortomsmeding <tom.smeding@gmail.com>2019-09-18 20:22:09 +0200
committertomsmeding <tom.smeding@gmail.com>2019-09-18 20:25:15 +0200
commit010668be042bca3349785b54ab58ba4793239556 (patch)
treef862f80db86ca8127ab632ff396f175e4ac2d30a
parentc4c121cd5460da02db1563ad1118cd0db09ceb69 (diff)
lijst: Some database size limit
-rw-r--r--modules/lijst/lijst.js20
1 files changed, 19 insertions, 1 deletions
diff --git a/modules/lijst/lijst.js b/modules/lijst/lijst.js
index ce81bb5..d30f3f4 100644
--- a/modules/lijst/lijst.js
+++ b/modules/lijst/lijst.js
@@ -16,8 +16,16 @@ if(!lijst||Array.isArray(lijst)){
persist.setItemSync("lijst",lijst);
}
+var maxlijstcost=1000000;
+
var moddir;
+function computecost(l){
+ var cost=0;
+ for(var i=0;i<l.length;i++)cost+=10+l[i].text;
+ return cost;
+}
+
function repeatstring(n,s){
return Array(n+1).join(s);
}
@@ -51,7 +59,17 @@ module.exports=function(app,io,_moddir){
render(res);
});
app.post("/lijst/add",function(req,res){
- lijst.lijst.push({text:req.body.trim(),id:lijst.nextid++,votes:0});
+ if(typeof req.body!="string"){
+ res.status(400).end("Malformed request data");
+ return;
+ }
+ var obj={text:req.body.trim(),id:lijst.nextid++,votes:0};
+ lijst.lijst.push(obj);
+ if(computecost(lijst.lijst)>maxlijstcost){
+ lijst.lijst.pop();
+ res.status(451).end("Database too large");
+ return;
+ }
persist.setItemSync("lijst",lijst);
res.status(200).end(renderFragment());
});