diff options
author | Linus Nordberg <linus@nordu.net> | 2015-11-17 13:33:00 +0100 |
---|---|---|
committer | Linus Nordberg <linus@nordu.net> | 2015-11-20 10:14:16 +0100 |
commit | 83b2e1b67b770c5c075fc7a599c51a1febf4a571 (patch) | |
tree | d2851bfb018a44845774f82d3d5baee89d133581 | |
parent | 6a22acb08fb2675bf254acf8c014039727dbb891 (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.erl | 13 |
1 files changed, 12 insertions, 1 deletions
@@ -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). |