From 09a39b4cb3b1f340f3229e720f6a7d3d650bffd2 Mon Sep 17 00:00:00 2001 From: levlam Date: Wed, 8 Jun 2022 03:55:27 +0300 Subject: [PATCH] Ensure that parsed file size isn't negative. --- td/telegram/files/FileManager.hpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/td/telegram/files/FileManager.hpp b/td/telegram/files/FileManager.hpp index a0706cc7a..520739016 100644 --- a/td/telegram/files/FileManager.hpp +++ b/td/telegram/files/FileManager.hpp @@ -168,6 +168,9 @@ FileId FileManager::parse_file(ParserT &parser) { int32 int_size; parse(int_size, parser); stored_size = int_size; + if (stored_size < 0) { + stored_size += static_cast(1) << 32; + } } int64 size = has_expected_size ? 0 : stored_size; int64 expected_size = has_expected_size ? stored_size : 0; @@ -190,6 +193,9 @@ FileId FileManager::parse_file(ParserT &parser) { int32 int_size; parse(int_size, parser); size = int_size; + if (size < 0) { + size += static_cast(1) << 32; + } } int32 get_by_hash; parse(get_by_hash, parser); @@ -215,6 +221,9 @@ FileId FileManager::parse_file(ParserT &parser) { int32 int_size; parse(int_size, parser); expected_size = int_size; + if (expected_size < 0) { + expected_size += static_cast(1) << 32; + } } int32 zero; parse(zero, parser);