From 72fdb2fb8870f49cb066eca754e87e7b7e5d82d9 Mon Sep 17 00:00:00 2001 From: Magnus Ahltorp Date: Tue, 18 Nov 2014 17:06:53 +0100 Subject: Make ht load tree and verify root hash before updating tree size --- src/frontend.erl | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'src/frontend.erl') 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 -- cgit v1.1