diff options
author | Magnus Ahltorp <map@kth.se> | 2014-11-18 17:06:53 +0100 |
---|---|---|
committer | Magnus Ahltorp <map@kth.se> | 2014-11-19 05:03:19 +0100 |
commit | 72fdb2fb8870f49cb066eca754e87e7b7e5d82d9 (patch) | |
tree | f880bf106a4300a739ce41b04f3d213ab9a858b5 /src/frontend.erl | |
parent | 41412486d1b128057e453ac94c675a83a2f3e1b4 (diff) |
Make ht load tree and verify root hash before updating tree size
Diffstat (limited to 'src/frontend.erl')
-rw-r--r-- | src/frontend.erl | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/frontend.erl b/src/frontend.erl index 9c69517..6fc2fd5 100644 --- a/src/frontend.erl +++ b/src/frontend.erl @@ -41,6 +41,7 @@ request(post, "ct/frontend/sendsth", Input) -> {struct, PropList} -> OldSize = db:size(), Treesize = proplists:get_value(<<"tree_size">>, PropList), + RootHash = base64:decode(proplists:get_value(<<"sha256_root_hash">>, PropList)), Indexsize = db:indexsize(), if @@ -59,9 +60,15 @@ request(post, "ct/frontend/sendsth", Input) -> case Errors of [] -> - ok = db:set_treesize(Treesize), - ht:reset_tree([db:size() - 1]), - success({[{result, <<"ok">>}]}); + ht:load_tree(Treesize - 1), + OwnRootHash = ht:root(Treesize - 1), + case OwnRootHash of + RootHash -> + ok = db:set_treesize(Treesize), + success({[{result, <<"ok">>}]}); + _ -> + html("Root hash not the same", hex:bin_to_hexstr(OwnRootHash)) + end; _ -> html("Database not complete", Errors) end |