From 1363675adb162050bcf67a43a02d3eb349e305f5 Mon Sep 17 00:00:00 2001 From: thiolliere Date: Tue, 31 Mar 2020 18:41:55 +0200 Subject: [PATCH] safe slice operation (#5471) --- substrate/frame/support/src/hash.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/substrate/frame/support/src/hash.rs b/substrate/frame/support/src/hash.rs index f8d6409060..693e929a30 100644 --- a/substrate/frame/support/src/hash.rs +++ b/substrate/frame/support/src/hash.rs @@ -92,6 +92,10 @@ impl StorageHasher for Twox64Concat { } impl ReversibleStorageHasher for Twox64Concat { fn reverse(x: &[u8]) -> &[u8] { + if x.len() < 8 { + crate::debug::error!("Invalid reverse: hash length too short"); + return &[] + } &x[8..] } } @@ -110,6 +114,10 @@ impl StorageHasher for Blake2_128Concat { } impl ReversibleStorageHasher for Blake2_128Concat { fn reverse(x: &[u8]) -> &[u8] { + if x.len() < 16 { + crate::debug::error!("Invalid reverse: hash length too short"); + return &[] + } &x[16..] } }