summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
0be8b6b)
Avoid an eventual double-free if heap_init fails in bt_iter_set_pos.
[ Note by Mathieu Desnoyers: the current implementation of heap_init
ensures that ptrs is set to NULL when it fails, so there is currently
no double-free situation. But let's not rely on this implementation
detail that might change in the future. ]
Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
heap_free(iter->stream_heap);
ret = heap_init(iter->stream_heap, 0, stream_compare);
if (ret < 0)
heap_free(iter->stream_heap);
ret = heap_init(iter->stream_heap, 0, stream_compare);
if (ret < 0)
for (i = 0; i < iter_pos->u.restore->stream_saved_pos->len;
i++) {
for (i = 0; i < iter_pos->u.restore->stream_saved_pos->len;
i++) {
heap_free(iter->stream_heap);
ret = heap_init(iter->stream_heap, 0, stream_compare);
if (ret < 0)
heap_free(iter->stream_heap);
ret = heap_init(iter->stream_heap, 0, stream_compare);
if (ret < 0)
/* for each trace in the trace_collection */
for (i = 0; i < tc->array->len; i++) {
/* for each trace in the trace_collection */
for (i = 0; i < tc->array->len; i++) {
heap_free(iter->stream_heap);
ret = heap_init(iter->stream_heap, 0, stream_compare);
if (ret < 0)
heap_free(iter->stream_heap);
ret = heap_init(iter->stream_heap, 0, stream_compare);
if (ret < 0)
for (i = 0; i < tc->array->len; i++) {
struct ctf_trace *tin;
for (i = 0; i < tc->array->len; i++) {
struct ctf_trace *tin;
error:
heap_free(iter->stream_heap);
error:
heap_free(iter->stream_heap);
if (heap_init(iter->stream_heap, 0, stream_compare) < 0) {
heap_free(iter->stream_heap);
g_free(iter->stream_heap);
iter->stream_heap = NULL;
ret = -ENOMEM;
}
if (heap_init(iter->stream_heap, 0, stream_compare) < 0) {
heap_free(iter->stream_heap);
g_free(iter->stream_heap);
iter->stream_heap = NULL;
ret = -ENOMEM;
}
heap_free(iter->stream_heap);
error_heap_init:
g_free(iter->stream_heap);
heap_free(iter->stream_heap);
error_heap_init:
g_free(iter->stream_heap);
+ iter->stream_heap = NULL;