From 51ce83ed20cd2ea493cf8118c1d85f9963f4e77f Mon Sep 17 00:00:00 2001 From: Miika Turkia Date: Thu, 10 Sep 2015 07:19:04 +0300 Subject: Fix memory leaks in serial ftdi Signed-off-by: Miika Turkia Signed-off-by: Dirk Hohndel --- serial_ftdi.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/serial_ftdi.c b/serial_ftdi.c index ab74b9ac1..cbac026cf 100644 --- a/serial_ftdi.c +++ b/serial_ftdi.c @@ -186,6 +186,7 @@ static dc_status_t serial_ftdi_open (serial_t **out, dc_context_t *context, cons struct ftdi_context *ftdi_ctx = ftdi_new(); if (ftdi_ctx == NULL) { + free(device); SYSERROR (context, errno); return DC_STATUS_NOMEMORY; } @@ -205,11 +206,13 @@ static dc_status_t serial_ftdi_open (serial_t **out, dc_context_t *context, cons ftdi_init(ftdi_ctx); if (ftdi_set_interface(ftdi_ctx,INTERFACE_ANY)) { + free(device); ERROR (context, "%s", ftdi_get_error_string(ftdi_ctx)); return DC_STATUS_IO; } if (serial_ftdi_open_device(ftdi_ctx) < 0) { + free(device); ERROR (context, "%s", ftdi_get_error_string(ftdi_ctx)); return DC_STATUS_IO; } @@ -220,6 +223,7 @@ static dc_status_t serial_ftdi_open (serial_t **out, dc_context_t *context, cons } if (ftdi_usb_purge_buffers(ftdi_ctx)) { + free(device); ERROR (context, "%s", ftdi_get_error_string(ftdi_ctx)); return DC_STATUS_IO; } -- cgit v1.2.3-70-g09d2