diff --git a/td/mtproto/ProxySecret.cpp b/td/mtproto/ProxySecret.cpp index de4962e19..1d53b30fe 100644 --- a/td/mtproto/ProxySecret.cpp +++ b/td/mtproto/ProxySecret.cpp @@ -24,6 +24,9 @@ Result ProxySecret::from_link(Slice encoded_secret) { } Result ProxySecret::from_binary(Slice raw_unchecked_secret) { + if (raw_unchecked_secret.size() > 17 + 255) { + return Status::Error(400, "Too long secret"); + } if (raw_unchecked_secret.size() == 16 || (raw_unchecked_secret.size() == 17 && static_cast(raw_unchecked_secret[0]) == 0xdd) || (raw_unchecked_secret.size() >= 18 && static_cast(raw_unchecked_secret[0]) == 0xee)) {