1 | diff -Naur a/boost/asio/detail/impl/socket_ops.ipp b/boost/asio/detail/impl/socket_ops.ipp
|
---|
2 | --- a/boost/asio/detail/impl/socket_ops.ipp 2012-07-23 16:33:31.000000000 +0530
|
---|
3 | +++ b/boost/asio/detail/impl/socket_ops.ipp 2012-12-13 14:59:03.000000000 +0530
|
---|
4 | @@ -1880,7 +1880,15 @@
|
---|
5 | && ((ipv6_address->s6_addr[1] & 0xc0) == 0x80));
|
---|
6 | if (!is_link_local || if_indextoname(scope_id, if_name + 1) == 0)
|
---|
7 | sprintf(if_name + 1, "%lu", scope_id);
|
---|
8 | - strcat(dest, if_name);
|
---|
9 | +
|
---|
10 | + if((strlen(dest)+strlen(if_name)) < length)
|
---|
11 | + strcat(dest, if_name);
|
---|
12 | + else
|
---|
13 | + {
|
---|
14 | + ec = boost::asio::error::invalid_argument; // length is not sufficient
|
---|
15 | + result=0;
|
---|
16 | + }
|
---|
17 | +
|
---|
18 | }
|
---|
19 | return result;
|
---|
20 | #endif // defined(BOOST_WINDOWS) || defined(__CYGWIN__)
|
---|