diff options
author | Linus Nordberg <linus@nordu.net> | 2015-11-17 13:33:00 +0100 |
---|---|---|
committer | Linus Nordberg <linus@nordu.net> | 2015-11-17 13:33:00 +0100 |
commit | e3327983894a118d893954125e5d5347dd075337 (patch) | |
tree | 7fc58e4cd51706f10aa9df7c6af52ac6297d2e5d | |
parent | ff47ffd21f5f998cb37347eb8522a217cbf39571 (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). |