diff options
author | Jordan Augé <jordan.auge+fdio@cisco.com> | 2019-11-20 18:06:01 +0100 |
---|---|---|
committer | Jordan Augé <jordan.auge+fdio@cisco.com> | 2019-11-20 18:06:01 +0100 |
commit | 275b80b81746cdf5fc9b8299e7441c9d0d8718de (patch) | |
tree | 7402451d28e79eefd36c0fd57ebff077ea868dda /ctrl | |
parent | 1d1c54db773d8b9f81f15295fe6ecea872ce2883 (diff) |
[HICN-404] double-free in facemgr (facemgr_list_facelets_json) + valgrind fixes
Change-Id: Id57873d3f4152af654f3bc27778d7015495597d7
Signed-off-by: Jordan Augé <jordan.auge+fdio@cisco.com>
Diffstat (limited to 'ctrl')
-rw-r--r-- | ctrl/facemgr/src/api.c | 1 | ||||
-rw-r--r-- | ctrl/facemgr/src/interfaces/hicn_light/hicn_light.c | 3 | ||||
-rw-r--r-- | ctrl/libhicnctrl/src/api.c | 4 |
3 files changed, 5 insertions, 3 deletions
diff --git a/ctrl/facemgr/src/api.c b/ctrl/facemgr/src/api.c index dfb23db3b..13b811288 100644 --- a/ctrl/facemgr/src/api.c +++ b/ctrl/facemgr/src/api.c @@ -2087,7 +2087,6 @@ facemgr_list_facelets_json(const facemgr_t * facemgr, char ** buffer) if (size != 0 && cur >= s + size) goto END; } - free(facelet_array); rc = snprintf(cur, s + size - cur, "]}\n"); if (rc < 0) diff --git a/ctrl/facemgr/src/interfaces/hicn_light/hicn_light.c b/ctrl/facemgr/src/interfaces/hicn_light/hicn_light.c index a6cd44fe0..4ba4c5b1f 100644 --- a/ctrl/facemgr/src/interfaces/hicn_light/hicn_light.c +++ b/ctrl/facemgr/src/interfaces/hicn_light/hicn_light.c @@ -101,7 +101,6 @@ int hl_process_state(interface_t * interface) } data->state = HL_STATE_FACES_SENT; break; - break; case HL_STATE_FACES_RECEIVED: data->state = HL_STATE_IDLE; @@ -601,7 +600,7 @@ int hl_callback(interface_t * interface, int fd, void * unused) facelet_set_event(facelet, FACELET_EVENT_GET); interface_raise_event(interface, facelet); } - + hc_data_free(results); hc_data_free(data->polled_routes); data->polled_routes = NULL; data->state = HL_STATE_FACES_RECEIVED; diff --git a/ctrl/libhicnctrl/src/api.c b/ctrl/libhicnctrl/src/api.c index 1a5bd8cee..2d8ee40f0 100644 --- a/ctrl/libhicnctrl/src/api.c +++ b/ctrl/libhicnctrl/src/api.c @@ -521,6 +521,8 @@ hc_sock_free(hc_sock_t * s) } else { for (unsigned i = 0; i < n; i++) { hc_sock_request_t * request = request_array[i]; + if (hc_sock_map_remove(s->map, request->seq, NULL) < 0) + ERROR("[hc_sock_process] Error removing request from map"); hc_sock_request_free(request); } free(request_array); @@ -669,6 +671,8 @@ hc_sock_process(hc_sock_t * s, hc_data_t ** data) if (s->remaining == 0) { hc_data_set_complete(request->data); *data = request->data; + if (hc_sock_map_remove(s->map, request->seq, NULL) < 0) + ERROR("[hc_sock_process] Error removing request from map"); hc_sock_request_free(request); } else { /* We only remember it if there is still data to parse */ |