wallet2: reject standalone short payment IDs in monero: URI API

This commit is contained in:
moneromooo-monero 2019-05-01 15:52:17 +00:00
parent 581994b61c
commit 1c44e65863
No known key found for this signature in database
GPG Key ID: 686F07454D6CEFC3
2 changed files with 3 additions and 7 deletions

View File

@ -12610,8 +12610,7 @@ std::string wallet2::make_uri(const std::string &address, const std::string &pay
if (!payment_id.empty()) if (!payment_id.empty())
{ {
crypto::hash pid32; crypto::hash pid32;
crypto::hash8 pid8; if (!wallet2::parse_long_payment_id(payment_id, pid32))
if (!wallet2::parse_long_payment_id(payment_id, pid32) && !wallet2::parse_short_payment_id(payment_id, pid8))
{ {
error = "Invalid payment id"; error = "Invalid payment id";
return std::string(); return std::string();
@ -12705,8 +12704,7 @@ bool wallet2::parse_uri(const std::string &uri, std::string &address, std::strin
return false; return false;
} }
crypto::hash hash; crypto::hash hash;
crypto::hash8 hash8; if (!wallet2::parse_long_payment_id(kv[1], hash))
if (!wallet2::parse_long_payment_id(kv[1], hash) && !wallet2::parse_short_payment_id(kv[1], hash8))
{ {
error = "Invalid payment id: " + kv[1]; error = "Invalid payment id: " + kv[1];
return false; return false;

View File

@ -144,9 +144,7 @@ TEST(uri, bad_payment_id)
TEST(uri, short_payment_id) TEST(uri, short_payment_id)
{ {
PARSE_URI("monero:" TEST_ADDRESS"?tx_payment_id=1234567890123456", true); PARSE_URI("monero:" TEST_ADDRESS"?tx_payment_id=1234567890123456", false);
ASSERT_EQ(address, TEST_ADDRESS);
ASSERT_EQ(payment_id, "1234567890123456");
} }
TEST(uri, long_payment_id) TEST(uri, long_payment_id)