From 83b2e1b67b770c5c075fc7a599c51a1febf4a571 Mon Sep 17 00:00:00 2001
From: Linus Nordberg <linus@nordu.net>
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(-)

(limited to 'src')

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