Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit947cc7e

Browse files
committed
Merge pull request#553 from cnagune/0.11-devel-fix-decode-percent
fix boost::network::uri::decode error - out of range because of '%'
2 parentsb540ff3 +8f5831f commit947cc7e

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

‎boost/network/uri/decode.hpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include<boost/range/begin.hpp>
1111
#include<boost/range/end.hpp>
1212
#include<cassert>
13+
#include<stdexcept>
1314

1415
namespaceboost {
1516
namespacenetwork {
@@ -58,9 +59,9 @@ OutputIterator decode(const InputIterator &in_begin,
5859
OutputIterator out = out_begin;
5960
while (it != in_end) {
6061
if (*it =='%') {
61-
++it;
62+
if (++it == in_end)throwstd::out_of_range("unexpected end of stream");
6263
value_type v0 =detail::letter_to_hex(*it);
63-
++it;
64+
if (++it == in_end)throwstd::out_of_range("unexpected end of stream");
6465
value_type v1 =detail::letter_to_hex(*it);
6566
++it;
6667
*out++ =0x10 * v0 + v1;

‎libs/network/test/uri/uri_encoding_test.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,3 +47,10 @@ BOOST_AUTO_TEST_CASE(decoding_multibyte_test) {
4747
uri::decode(encoded,std::back_inserter(instance));
4848
BOOST_CHECK_EQUAL(instance, unencoded);
4949
}
50+
51+
BOOST_AUTO_TEST_CASE(decoding_throw_test) {
52+
const std::stringencoded("%");
53+
54+
std::string instance;
55+
BOOST_CHECK_THROW(uri::decoded(encoded), std::out_of_range);
56+
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp