From 78accdb63935c616715e7c64fdaa0aaeb2171cd7 Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Thu, 17 May 2018 11:48:00 -0400 Subject: [PATCH] fix segfault when both forwarding and output are enabled fixes #556 Change-Id: I80179a55bb9bac5478ed70e445bd4e2b87dfaaa6 --- recording-daemon/forward.c | 2 -- recording-daemon/stream.c | 10 +++++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/recording-daemon/forward.c b/recording-daemon/forward.c index 45cec2309..01b1d1dd7 100644 --- a/recording-daemon/forward.c +++ b/recording-daemon/forward.c @@ -66,11 +66,9 @@ int forward_packet(metafile_t *mf, unsigned char *buf, unsigned len) { goto err; } - free(buf); return 0; err: - free(buf); return -1; } diff --git a/recording-daemon/stream.c b/recording-daemon/stream.c index 9b5377def..b6b40d17b 100644 --- a/recording-daemon/stream.c +++ b/recording-daemon/stream.c @@ -68,14 +68,18 @@ static void stream_handler(handler_t *handler) { // got a packet pthread_mutex_unlock(&stream->lock); - if (output_enabled) - packet_process(stream, buf, ret); + if (forward_to){ - if (forward_packet(stream->metafile,buf,ret)) + if (forward_packet(stream->metafile,buf,ret)) // leaves buf intact g_atomic_int_inc(&stream->metafile->forward_failed); else g_atomic_int_inc(&stream->metafile->forward_count); } + if (output_enabled) + packet_process(stream, buf, ret); // consumes buf + else + free(buf); + log_info_call = NULL; log_info_stream = NULL; return;