From 25f5d66a7752379abe454da0705df4ed15ce6426 Mon Sep 17 00:00:00 2001 From: Lars-Peter Clausen Date: Tue, 3 Jul 2012 23:58:40 +0200 Subject: [PATCH] sr: fx2lafw: Fix potential leaks in acquisition_start error paths Call abort_acquisition if starting sampling fails in acquisition_start, this will ensure that all already allocated resources are being freed again. Signed-off-by: Lars-Peter Clausen --- hardware/fx2lafw/fx2lafw.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hardware/fx2lafw/fx2lafw.c b/hardware/fx2lafw/fx2lafw.c index 11e41fff..59ad5e73 100644 --- a/hardware/fx2lafw/fx2lafw.c +++ b/hardware/fx2lafw/fx2lafw.c @@ -946,9 +946,9 @@ static int hw_dev_acquisition_start(int dev_index, void *cb_data) 2 | LIBUSB_ENDPOINT_IN, buf, size, receive_transfer, ctx, timeout); if (libusb_submit_transfer(transfer) != 0) { - /* TODO: Free them all. */ libusb_free_transfer(transfer); g_free(buf); + abort_acquisition(ctx); return SR_ERR; } ctx->transfers[i] = transfer; @@ -976,6 +976,7 @@ static int hw_dev_acquisition_start(int dev_index, void *cb_data) if ((ret = command_start_acquisition (ctx->usb->devhdl, ctx->cur_samplerate, ctx->sample_wide)) != SR_OK) { + abort_acquisition(ctx); return ret; }