Fix getPushReceiverId for encrypted pushes.
GitOrigin-RevId: f440b656a617a018995ac6e59e4675b6668ca786
This commit is contained in:
parent
06a82aff73
commit
429d709ea1
@ -17,6 +17,7 @@
|
||||
#include "td/telegram/TdDb.h"
|
||||
|
||||
#include "td/utils/as.h"
|
||||
#include "td/utils/base64.h"
|
||||
#include "td/utils/format.h"
|
||||
#include "td/utils/JsonBuilder.h"
|
||||
#include "td/utils/logging.h"
|
||||
@ -2103,10 +2104,15 @@ Result<int64> NotificationManager::get_push_receiver_id(string payload) {
|
||||
return Status::Error(400, "Expected encrypted payload as a String");
|
||||
}
|
||||
Slice data = encrypted_payload.get_string();
|
||||
if (data.size() < 8) {
|
||||
if (data.size() < 12) {
|
||||
return Status::Error(400, "Encrypted payload is too small");
|
||||
}
|
||||
return as<int64>(data.data());
|
||||
auto r_decoded = base64url_decode(data.substr(0, 12));
|
||||
if (r_decoded.is_error()) {
|
||||
return Status::Error(400, "Failed to base64url-decode payload");
|
||||
}
|
||||
CHECK(r_decoded.ok().size() == 9);
|
||||
return as<int64>(r_decoded.ok().c_str());
|
||||
}
|
||||
if (field_value.first == "user_id") {
|
||||
auto user_id = std::move(field_value.second);
|
||||
|
@ -20,7 +20,6 @@ class MultiPromiseInterface {
|
||||
virtual void add_promise(Promise<> &&promise) = 0;
|
||||
virtual Promise<> get_promise() = 0;
|
||||
|
||||
// deprecated?
|
||||
virtual size_t promise_count() const = 0;
|
||||
virtual void set_ignore_errors(bool ignore_errors) = 0;
|
||||
|
||||
|
Reference in New Issue
Block a user