summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Nordberg <linus@nordu.net>2015-11-17 13:33:00 +0100
committerLinus Nordberg <linus@nordu.net>2015-11-20 10:14:16 +0100
commit83b2e1b67b770c5c075fc7a599c51a1febf4a571 (patch)
treed2851bfb018a44845774f82d3d5baee89d133581
parent6a22acb08fb2675bf254acf8c014039727dbb891 (diff)
Add config knob max_submit_size.
If a blob is larger than this, in octets, after Base64 decoding, the submission is rejected with 400.
-rw-r--r--src/v1.erl13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/v1.erl b/src/v1.erl
index a52171e..7b7f6bf 100644
--- a/src/v1.erl
+++ b/src/v1.erl
@@ -157,8 +157,19 @@ add_blob(Input) ->
{'EXIT', _} ->
err400("add-blob: invalid base64-encoded blob", Blob);
DecodedBlob ->
- success(catlfish:add_chain(DecodedBlob, [], normal))
+ add_blob_helper(DecodedBlob,
+ application:get_env(catlfish,
+ max_submit_size,
+ 0))
end;
_ ->
err400("add-blob: missing input: blob", Input)
end.
+
+add_blob_helper(Blob, MaxSize) when MaxSize == 0 ->
+ success(catlfish:add_chain(Blob, [], normal));
+add_blob_helper(Blob, MaxSize) when erlang:size(Blob) =< MaxSize ->
+ add_blob_helper(Blob, 0);
+add_blob_helper(Blob, MaxSize) ->
+ err400(io_lib:format("add-blob: blob too large (~p > ~p)",
+ [erlang:size(Blob), MaxSize]), Blob).