]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
fix various mistakes found by static analysis
authorŠtěpán Balážik <stepan.balazik@nic.cz>
Sat, 29 Aug 2020 15:31:41 +0000 (17:31 +0200)
committerŠtěpán Balážik <stepan.balazik@nic.cz>
Thu, 15 Oct 2020 11:22:21 +0000 (13:22 +0200)
daemon/worker.c
lib/selection.c
lib/selection_forward.c
lib/selection_iter.c

index 171a425a15ebbb66ac4444cdb8f18e6062f0dc54..b01ef73d9ab4c790e159db197d0ba7db63f2c5c2 100644 (file)
@@ -122,7 +122,7 @@ static int worker_add_tcp_waiting(struct worker_ctx *worker,
 struct session* worker_find_tcp_waiting(struct worker_ctx *worker,
                                               const struct sockaddr *addr);
 static void on_tcp_connect_timeout(uv_timer_t *timer);
-static void on_udp_timeout(uv_timer_t *req);
+static void on_udp_timeout(uv_timer_t *timer);
 static void subreq_finalize(struct qr_task *task, const struct sockaddr *packet_source, knot_pkt_t *pkt);
 
 
@@ -1514,7 +1514,7 @@ static int qr_task_step(struct qr_task *task,
        /* We're done, no more iterations needed */
        if (state & (KR_STATE_DONE|KR_STATE_FAIL)) {
                return qr_task_finalize(task, state);
-       } else if (!task->transport->protocol) {
+       } else if (!task->transport || !task->transport->protocol) {
                return qr_task_step(task, NULL, NULL);
        }
 
index 1efece62163c5eed97ed9d9303c05d8ee3498744..7d9b0d12fa07766875033e463aebc5debe11e6ff 100644 (file)
@@ -30,7 +30,7 @@
 void *prefix_key(const uint8_t *ip, size_t len) {
     void *key = malloc(len+1);
     *(char*) key = KEY_PREFIX;
-    memcpy(key+1, ip, len);
+    memcpy((uint8_t *)key+1, ip, len);
     return key;
 }
 
@@ -40,7 +40,7 @@ void *prefix_key(const uint8_t *ip, size_t len) {
 const struct rtt_state default_rtt_state = {0, DEFAULT_TIMEOUT/4, 0};
 
 struct rtt_state get_rtt_state(const uint8_t *ip, size_t len, struct kr_cache *cache) {
-    struct rtt_state state = {0,0};
+    struct rtt_state state;
     knot_db_val_t value;
     knot_db_t *db = cache->db;
     struct kr_cdb_stats *stats = &cache->stats;
@@ -120,8 +120,8 @@ struct rtt_state calc_rtt_state(struct rtt_state old, unsigned new_rtt) {
 
     struct rtt_state ret;
 
-    ret.srtt = 0.75 * old.srtt + 0.25 * new_rtt;
-    ret.variance = 0.875 * old.variance + 0.125 * abs(old.srtt - new_rtt);
+    ret.srtt = (int32_t)(0.75 * old.srtt + 0.25 * new_rtt);
+    ret.variance = (int32_t)(0.875 * old.variance + 0.125 * abs(old.srtt - (int32_t)new_rtt));
     ret.consecutive_timeouts = 0;
 
     return ret;
index a68d65d3e57c5880f7d3b0a1c6e719de4c34dcf5..a4dda30239c7bce7e7b5a06a489fce380f8bbc9d 100644 (file)
@@ -74,7 +74,6 @@ void forward_choose_transport(struct kr_query *qry, struct kr_transport **transp
 }
 
 void forward_success(struct kr_query *qry, const struct kr_transport *transport) {
-    return;
 }
 
 void forward_error(struct kr_query *qry, const struct kr_transport *transport, enum kr_selection_error sel_error) {
index 9429882cc8d73d3f983bc3e21fb250022ac21e94..6019cdf75038538f6b88662c3c122822595c7952 100644 (file)
@@ -95,7 +95,7 @@ void iter_update_state_from_zonecut(struct iter_local_state *local_state, struct
         } else {
             // We have some addresses to work with, let's iterate over them
             for(uint8_t *obj = pack_head(*addresses); obj != pack_tail(*addresses); obj = pack_obj_next(obj)) {
-                uint8_t *address = (uint8_t *)pack_obj_val(obj);
+                uint8_t *address = pack_obj_val(obj);
                 size_t address_len = pack_obj_len(obj);
                 trie_val_t *val = trie_get_ins(local_state->addresses, (char *)address, address_len);
                 if (!*val) {
@@ -193,7 +193,6 @@ void iter_choose_transport(struct kr_query *qry, struct kr_transport **transport
 }
 
 void iter_success(struct kr_query *qry, const struct kr_transport *transport) {
-    return;
 }
 
 void iter_error(struct kr_query *qry, const struct kr_transport *transport, enum kr_selection_error sel_error) {