tools:iio: free channel-array completely
In iio_utils.c build_channel_array() dynamically allocates the string generic_name in the current iio_channel_info, which doesn't got freed in case of an error. This dynamically allocated channel-array is used by generic_buffer, and needs to be freed on the error/exit path. Signed-off-by: Hartmut Knaack <knaack.h@gmx.de> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
This commit is contained in:
parent
66dd08fde0
commit
63f05c855f
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue