diff options
author | tomsmeding <tom.smeding@gmail.com> | 2019-09-18 20:22:09 +0200 |
---|---|---|
committer | tomsmeding <tom.smeding@gmail.com> | 2019-09-18 20:25:15 +0200 |
commit | 010668be042bca3349785b54ab58ba4793239556 (patch) | |
tree | f862f80db86ca8127ab632ff396f175e4ac2d30a | |
parent | c4c121cd5460da02db1563ad1118cd0db09ceb69 (diff) |
lijst: Some database size limit
-rw-r--r-- | modules/lijst/lijst.js | 20 |
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()); }); |