From f16953b26414f915b0d400f62cde1dfdd6f3c50c Mon Sep 17 00:00:00 2001 From: Robert Newson Date: Sat, 6 May 2023 14:36:38 +0100 Subject: make legacy checksums a compile-time option --- src/couch/src/couch_file.erl | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/couch/src/couch_file.erl b/src/couch/src/couch_file.erl index 315f3a795..0a9aaf49c 100644 --- a/src/couch/src/couch_file.erl +++ b/src/couch/src/couch_file.erl @@ -864,11 +864,11 @@ verify_checksum(Fd, Pos, IoList, Checksum) -> verify_checksum(Data, ExpectedChecksum) -> Bin = iolist_to_binary(Data), - case ExpectedChecksum == exxhash:xxhash128(Bin) of + case ExpectedChecksum == checksum(Bin) of true -> true; false -> - case ExpectedChecksum == couch_hash:md5_hash(Data) of + case ExpectedChecksum == legacy_checksum(Data) of true -> couch_stats:increment_counter([couch_file, old_checksums]), true; @@ -877,6 +877,18 @@ verify_checksum(Data, ExpectedChecksum) -> end end. +checksum(Bin) when is_binary(Bin) -> + exxhash:xxhash128(Bin). + +-ifdef(NO_MD5). +legacy_checksum(Bin) when is_binary(Bin) -> + true. +-else. +legacy_checksum(Bin) when is_binary(Bin) -> + couch_hash:md5_hash(Bin). +-endif. + + report_checksum_error(Fd, Pos) -> couch_log:emergency("File corruption in ~p at position ~B", [Fd, Pos]), exit({file_corruption, <<"file corruption">>}). -- cgit v1.2.1