g_new0 never returns NULL. We need to either always check for NULL, or
never. Remove all NULL checks on pointers returned by g_new0. Coverity
was complaining because we were dereferencing a pointer in an error path
after checking it against NULL, which is certainly never OK.
Found by coverity:
** CID
1136988: Dereference after null check (FORWARD_NULL)
/formats/lttng-live/lttng-live.c: 152 in lttng_live_open_trace_read()
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
(gpointer) ctf_trace_id);
if (!trace) {
trace = g_new0(struct lttng_live_ctf_trace, 1);
(gpointer) ctf_trace_id);
if (!trace) {
trace = g_new0(struct lttng_live_ctf_trace, 1);
- if (!trace) {
- ret = -1;
- fprintf(stderr, "[error] ctf_trace allocation\n");
- goto error;
- }
trace->ctf_trace_id = ctf_trace_id;
trace->streams = g_ptr_array_new();
g_hash_table_insert(stream->session->ctf_traces,
trace->ctf_trace_id = ctf_trace_id;
trace->streams = g_ptr_array_new();
g_hash_table_insert(stream->session->ctf_traces,
stream->ctf_trace = trace;
g_ptr_array_add(trace->streams, stream);
stream->ctf_trace = trace;
g_ptr_array_add(trace->streams, stream);
ctx->session->stream_count);
ctx->session->streams = g_new0(struct lttng_live_viewer_stream,
ctx->session->stream_count);
ctx->session->stream_count);
ctx->session->streams = g_new0(struct lttng_live_viewer_stream,
ctx->session->stream_count);
- if (!ctx->session->streams) {
- ret = -1;
- goto error;
- }
-
for (i = 0; i < be32toh(rp.streams_count); i++) {
do {
ret_len = recv(ctx->control_sock, &stream, sizeof(stream), 0);
for (i = 0; i < be32toh(rp.streams_count); i++) {
do {
ret_len = recv(ctx->control_sock, &stream, sizeof(stream), 0);
opt_payload_field_names = 1;
ctx.session = g_new0(struct lttng_live_session, 1);
opt_payload_field_names = 1;
ctx.session = g_new0(struct lttng_live_session, 1);
- if (!ctx.session) {
- ret = -1;
- goto end;
- }
/* We need a pointer to the context from the packet_seek function. */
ctx.session->ctx = &ctx;
/* We need a pointer to the context from the packet_seek function. */
ctx.session->ctx = &ctx;
end_free:
g_hash_table_destroy(ctx.session->ctf_traces);
g_free(ctx.session);
end_free:
g_hash_table_destroy(ctx.session->ctf_traces);
g_free(ctx.session);
g_free(ctx.session->streams);
return ret;
}
g_free(ctx.session->streams);
return ret;
}