mirror of https://github.com/oxen-io/lokinet
footcannon prevention: check for invalid address family.
throw if we pass in a bogus af value when getting a sockaddr for all interfaces
This commit is contained in:
parent
98b3860655
commit
33a2226079
|
@ -591,11 +591,15 @@ namespace llarp
|
|||
addr.sin_port = htons(0);
|
||||
return SockAddr{addr};
|
||||
}
|
||||
sockaddr_in6 addr6{};
|
||||
addr6.sin6_family = AF_INET6;
|
||||
addr6.sin6_port = htons(0);
|
||||
addr6.sin6_addr = IN6ADDR_ANY_INIT;
|
||||
return SockAddr{addr6};
|
||||
if (af == AF_INET6)
|
||||
{
|
||||
sockaddr_in6 addr6{};
|
||||
addr6.sin6_family = AF_INET6;
|
||||
addr6.sin6_port = htons(0);
|
||||
addr6.sin6_addr = IN6ADDR_ANY_INIT;
|
||||
return SockAddr{addr6};
|
||||
}
|
||||
throw llarp::make_exception<std::invalid_argument>(af, " is not a valid address family");
|
||||
}
|
||||
} // namespace
|
||||
|
||||
|
|
|
@ -35,6 +35,17 @@ namespace llarp
|
|||
return o.str();
|
||||
}
|
||||
|
||||
/// util for constructing an exception with a message constructed from a set of whatever passed
|
||||
/// into stringify
|
||||
/// E must be derived from std::exception here
|
||||
template <typename E, typename... T>
|
||||
E
|
||||
make_exception(T&&... stuff)
|
||||
{
|
||||
static_assert(std::is_base_of_v<std::exception, E>);
|
||||
return E{stringify(std::forward<T>(stuff)...)};
|
||||
}
|
||||
|
||||
using namespace std::literals;
|
||||
|
||||
/// Returns true if the first string is equal to the second string, compared case-insensitively.
|
||||
|
|
Loading…
Reference in New Issue