From fa74a26bc94c718bf1b965d553e89c29b4d7133c Mon Sep 17 00:00:00 2001 From: Martin Ling Date: Thu, 10 Sep 2015 00:45:32 +0100 Subject: [PATCH] output/analog: Allocate correct buffer size for sr_analog_to_float(). --- src/output/analog.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/output/analog.c b/src/output/analog.c index 6a9ab597..4018ec88 100644 --- a/src/output/analog.c +++ b/src/output/analog.c @@ -315,7 +315,9 @@ static int receive(const struct sr_output *o, const struct sr_datafeed_packet *p break; case SR_DF_ANALOG2: analog2 = packet->payload; - if (!(fdata = g_try_malloc(analog2->num_samples * sizeof(float)))) + num_channels = g_slist_length(analog2->meaning->channels); + if (!(fdata = g_try_malloc( + analog2->num_samples * num_channels * sizeof(float)))) return SR_ERR_MALLOC; if ((ret = sr_analog_to_float(analog2, fdata)) != SR_OK) return ret; @@ -330,7 +332,6 @@ static int receive(const struct sr_output *o, const struct sr_datafeed_packet *p digits = 6; } sr_analog_unit_to_string(analog2, &suffix); - num_channels = g_slist_length(analog2->meaning->channels); for (i = 0; i < analog2->num_samples; i++) { for (l = analog2->meaning->channels, c = 0; l; l = l->next, c++) { ch = l->data;