summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tools/iio/generic_buffer.c8
-rw-r--r--tools/iio/iio_utils.c4
2 files changed, 10 insertions, 2 deletions
diff --git a/tools/iio/generic_buffer.c b/tools/iio/generic_buffer.c
index 7859ee9a46b2..0410948e23c2 100644
--- a/tools/iio/generic_buffer.c
+++ b/tools/iio/generic_buffer.c
@@ -255,7 +255,7 @@ int main(int argc, char **argv)
"%siio:device%d/buffer", iio_dir, dev_num);
if (ret < 0) {
ret = -ENOMEM;
- goto error_free_triggername;
+ goto error_free_channels;
}
if (!notrigger) {
@@ -351,6 +351,12 @@ error_free_data:
free(data);
error_free_buf_dir_name:
free(buf_dir_name);
+error_free_channels:
+ for (i = num_channels - 1; i >= 0; i--) {
+ free(channels[i].name);
+ free(channels[i].generic_name);
+ }
+ free(channels);
error_free_triggername:
if (datardytrigger)
free(trigger_name);
diff --git a/tools/iio/iio_utils.c b/tools/iio/iio_utils.c
index f879ad7b88bc..6daf98fdde1a 100644
--- a/tools/iio/iio_utils.c
+++ b/tools/iio/iio_utils.c
@@ -410,8 +410,10 @@ int build_channel_array(const char *device_dir,
return 0;
error_cleanup_array:
- for (i = count - 1; i >= 0; i--)
+ for (i = count - 1; i >= 0; i--) {
free((*ci_array)[i].name);
+ free((*ci_array)[i].generic_name);
+ }
free(*ci_array);
error_close_dir:
closedir(dp);