Commit 78080c4c authored by Tristan Gingold's avatar Tristan Gingold

libwrtd-reconfigure.c: fix crashes

Was:
* wrong memset
* double free
* use of uninitialized variable
parent 7e88cf39
......@@ -92,10 +92,10 @@ static enum wrtd_status wrtd_reconfigure_alloc_map(struct wrtd_dev *wrtd,
for (i = 0; i < wrtd->nbr_rules; i++) {
if (wrtd_id_null(&wrtd->rules[i].conf.id))
continue;
memset(&map->rules[n].stats, 0, sizeof(struct wrtd_rule_stats));
map->rules[n].rule = &wrtd->rules[i];
map->rules[n].cpu = -1;
map->rules[n].global_idx = -1;
memset(&map->rules[n], 0, sizeof(struct wrtd_rule_stats));
n++;
}
assert (n == map->nbr_rules);
......@@ -264,7 +264,8 @@ static enum wrtd_status wrtd_reconfigure_place(struct wrtd_dev *wrtd,
rule->dest_ch = WRTD_DEST_CH_NET;
/* If source cpu can also send to
network, set dest cpu affinity to that cpu */
if (cpu_affinity >=0)
root = NULL;
if (cpu_affinity >= 0)
root = &wrtd->roots[cpu_affinity];
if ((root) && (root->capabilities & WRTD_CAP_NET_TX))
rule->dest_cpu = cpu_affinity;
......@@ -486,7 +487,6 @@ enum wrtd_status wrtd_reconfigure(struct wrtd_dev *wrtd, const char *caller_func
if (status == WRTD_SUCCESS)
status = wrtd_reconfigure_write(wrtd, &map, new_rules, caller_func);
free(new_rules);
free(map.rules);
free(map.devs);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment