From 46b997342a7b6ee592357730f39dd9b3f2ca3ae4 Mon Sep 17 00:00:00 2001 From: Linus Nordberg Date: Tue, 17 Nov 2015 13:33:00 +0100 Subject: Add config knob max_submit_size. If a blob is larger than this, in octets, after Base64 decoding, the submission is rejected with 400. --- src/v1.erl | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) 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). -- cgit v1.1