mirror of
https://github.com/wownero/wownero.git
synced 2026-11-10 18:37:35 +01:00
wallet: encode equals signs in URIs
The URI parser treats '=' as the parameter delimiter, so leaving it raw in text fields makes make_uri output fail to parse
This commit is contained in:
@@ -43,7 +43,7 @@ namespace net_utils
|
|||||||
inline const char* get_unsave_chars()
|
inline const char* get_unsave_chars()
|
||||||
{
|
{
|
||||||
//static constexpr char unsave_chars[] = "\"<>%\\^[]`+$,@:;/!#?=&";
|
//static constexpr char unsave_chars[] = "\"<>%\\^[]`+$,@:;/!#?=&";
|
||||||
static constexpr const char unsave_chars[] = "\"<>%\\^[]`+$,@:;!#&";
|
static constexpr const char unsave_chars[] = "\"<>%\\^[]`+$,@:;!#&=";
|
||||||
return unsave_chars;
|
return unsave_chars;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -274,3 +274,19 @@ TEST(uri, url_encoded_once)
|
|||||||
ASSERT_EQ(description, "foo 20");
|
ASSERT_EQ(description, "foo 20");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(uri, make_uri_encodes_equals)
|
||||||
|
{
|
||||||
|
tools::wallet2 w(cryptonote::TESTNET);
|
||||||
|
std::string error;
|
||||||
|
const std::string uri = w.make_uri(TEST_ADDRESS, "", 0, "key=value", "name=value", error);
|
||||||
|
|
||||||
|
ASSERT_TRUE(error.empty());
|
||||||
|
ASSERT_EQ(uri, "monero:" TEST_ADDRESS"?recipient_name=name%3Dvalue&tx_description=key%3Dvalue");
|
||||||
|
|
||||||
|
std::string address, payment_id, recipient_name, description;
|
||||||
|
uint64_t amount;
|
||||||
|
std::vector<std::string> unknown_parameters;
|
||||||
|
ASSERT_TRUE(w.parse_uri(uri, address, payment_id, amount, description, recipient_name, unknown_parameters, error));
|
||||||
|
EXPECT_EQ(recipient_name, "name=value");
|
||||||
|
EXPECT_EQ(description, "key=value");
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user