aboutsummaryrefslogtreecommitdiffhomepage
path: root/td/telegram/SecureStorage.cpp
diff options
context:
space:
mode:
authorlevlam <levlam@telegram.org>2018-04-06 16:26:32 +0300
committerlevlam <levlam@telegram.org>2018-04-06 16:26:32 +0300
commit93db75293db4e3a8f0b3301d9c303d27c8487865 (patch)
tree41af2267fa8a81e8e2fa7223921a4692518e0cb6 /td/telegram/SecureStorage.cpp
parentf7826ec41acb6a0a3ef8f9580246993b3bab73b7 (diff)
Various fixes.
GitOrigin-RevId: e3a710c085e465c44c850db0b41fae19061c2dc5
Diffstat (limited to 'td/telegram/SecureStorage.cpp')
-rw-r--r--td/telegram/SecureStorage.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/td/telegram/SecureStorage.cpp b/td/telegram/SecureStorage.cpp
index c0fd4579d..c0b2192fb 100644
--- a/td/telegram/SecureStorage.cpp
+++ b/td/telegram/SecureStorage.cpp
@@ -35,7 +35,7 @@ AesCbcState calc_aes_cbc_state(Slice seed) {
}
template <class F>
-Status data_view_for_each(DataView &data, F &&f) {
+static Status data_view_for_each(DataView &data, F &&f) {
const int64 step = 128 << 10;
for (int64 i = 0, size = data.size(); i < size; i += step) {
TRY_RESULT(bytes, data.pread(i, min(step, size - i)));
@@ -159,7 +159,7 @@ Result<Secret> Secret::create(Slice secret) {
}
uint32 checksum = secret_checksum(secret);
if (checksum != 0) {
- return Status::Error(PSLICE() << "Wrong cheksum " << checksum);
+ return Status::Error(PSLICE() << "Wrong checksum " << checksum);
}
UInt256 res;
td::as_slice(res).copy_from(secret);
@@ -206,7 +206,7 @@ Secret::Secret(UInt256 secret, int64 hash) : secret_(secret), hash_(hash) {
//EncryptedSecret
Result<EncryptedSecret> EncryptedSecret::create(Slice encrypted_secret) {
if (encrypted_secret.size() != 32) {
- return Status::Error("Wrong encrypte secret size");
+ return Status::Error("Wrong encrypted secret size");
}
UInt256 res;
td::as_slice(res).copy_from(encrypted_secret);
@@ -242,6 +242,9 @@ Result<BufferSlice> Decryptor::append(BufferSlice data) {
if (!skipped_prefix_) {
to_skip_ = data.as_slice().ubegin()[0];
size_t to_skip = min(to_skip_, data.size());
+ if (to_skip_ > data.size()) {
+ to_skip_ = 0; // to fail final to_skip check
+ }
skipped_prefix_ = true;
data = data.from_slice(data.as_slice().remove_prefix(to_skip));
}