diff --git a/src/context.c b/src/context.c index 41e7d3b2..ba51d90c 100644 --- a/src/context.c +++ b/src/context.c @@ -3569,10 +3569,12 @@ _get_context_settings(getdns_context* context) return NULL; /* int fields */ + /* the timeouts are stored as uint64, but the value maximum used in + practice is 6553500ms, so we just trim the value to be on the safe side. */ if ( getdns_dict_set_int(result, "timeout", - context->timeout) + (context->timeout > 0xFFFFFFFFull) ? 0xFFFFFFFF: (uint32_t) context->timeout) || getdns_dict_set_int(result, "idle_timeout", - context->idle_timeout) + (context->idle_timeout > 0xFFFFFFFFull) ? 0xFFFFFFFF : (uint32_t) context->idle_timeout) || getdns_dict_set_int(result, "limit_outstanding_queries", context->limit_outstanding_queries) || getdns_dict_set_int(result, "dnssec_allowed_skew", diff --git a/src/util-internal.c b/src/util-internal.c index fe05cd83..48242eb1 100644 --- a/src/util-internal.c +++ b/src/util-internal.c @@ -862,7 +862,7 @@ _getdns_create_call_reporting_dict( return NULL; } } else{ - uint32_t idle_timeout = netreq->upstream->keepalive_timeout; + uint32_t idle_timeout = (uint32_t) netreq->upstream->keepalive_timeout; if (getdns_dict_set_int( netreq_debug, "idle timeout in ms", idle_timeout)) { getdns_dict_destroy(netreq_debug); return NULL;