});
luaCtx.registerFunction<bool (std::shared_ptr<dnsdist::NetworkListener>::*)(const std::string&, uint16_t, std::function<void(uint16_t, std::string & dgram, const std::string& from)>)>("addUnixListeningEndpoint", [client](std::shared_ptr<dnsdist::NetworkListener>& listener, const std::string& path, uint16_t endpointID, std::function<void(uint16_t endpoint, std::string & dgram, const std::string& from)> cb) {
- if (client) {
+ if (client || !cb) {
return false;
}
#if HAVE_GETIFADDRS
static uint8_t convertNetmaskToBits(const struct in_addr* mask, socklen_t len)
{
+ if (mask == nullptr || len > 128) {
+ throw std::runtime_error("Invalid parameters passed to convertNetmaskToBits");
+ }
+
uint8_t result = 0;
// for all bytes in the address (4 for IPv4, 16 for IPv6)
for (size_t idx = 0; idx < len; idx++) {