summaryrefslogtreecommitdiffstats
path: root/tools/iio
diff options
context:
space:
mode:
authorHartmut Knaack <knaack.h@gmx.de>2015-05-31 08:40:02 -0400
committerJonathan Cameron <jic23@kernel.org>2015-05-31 14:21:10 -0400
commite9e45b43b8f06273d9b78f187042dff0bf5be0a5 (patch)
tree2e0bb238e6b234a12366c545e879b9b6646b9985 /tools/iio
parent2156b179993e3d5b422976181ba17d91153313e1 (diff)
tools:iio: catch errors in string allocation
This patch catches errors in string allocation in generic_buffer.c, iio_event_monitor.c, iio_utils.c and lsiio.c. Signed-off-by: Hartmut Knaack <knaack.h@gmx.de> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Diffstat (limited to 'tools/iio')
-rw-r--r--tools/iio/generic_buffer.c4
-rw-r--r--tools/iio/iio_event_monitor.c2
-rw-r--r--tools/iio/iio_utils.c9
-rw-r--r--tools/iio/lsiio.c15
4 files changed, 24 insertions, 6 deletions
diff --git a/tools/iio/generic_buffer.c b/tools/iio/generic_buffer.c
index 4cd246426b57..eb89bc2ca5d0 100644
--- a/tools/iio/generic_buffer.c
+++ b/tools/iio/generic_buffer.c
@@ -234,7 +234,9 @@ int main(int argc, char **argv)
234 } 234 }
235 printf("iio device number being used is %d\n", dev_num); 235 printf("iio device number being used is %d\n", dev_num);
236 236
237 asprintf(&dev_dir_name, "%siio:device%d", iio_dir, dev_num); 237 ret = asprintf(&dev_dir_name, "%siio:device%d", iio_dir, dev_num);
238 if (ret < 0)
239 return -ENOMEM;
238 240
239 if (!notrigger) { 241 if (!notrigger) {
240 if (trigger_name == NULL) { 242 if (trigger_name == NULL) {
diff --git a/tools/iio/iio_event_monitor.c b/tools/iio/iio_event_monitor.c
index 578390db1bec..1374374208ee 100644
--- a/tools/iio/iio_event_monitor.c
+++ b/tools/iio/iio_event_monitor.c
@@ -265,6 +265,8 @@ int main(int argc, char **argv)
265 /* If we can't find a IIO device by name assume device_name is a 265 /* If we can't find a IIO device by name assume device_name is a
266 IIO chrdev */ 266 IIO chrdev */
267 chrdev_name = strdup(device_name); 267 chrdev_name = strdup(device_name);
268 if (!chrdev_name)
269 return -ENOMEM;
268 } 270 }
269 271
270 fd = open(chrdev_name, 0); 272 fd = open(chrdev_name, 0);
diff --git a/tools/iio/iio_utils.c b/tools/iio/iio_utils.c
index 812153ff18c3..f0896f46847f 100644
--- a/tools/iio/iio_utils.c
+++ b/tools/iio/iio_utils.c
@@ -36,7 +36,7 @@ int iioutils_break_up_name(const char *full_name,
36 char *current; 36 char *current;
37 char *w, *r; 37 char *w, *r;
38 char *working, *prefix = ""; 38 char *working, *prefix = "";
39 int i; 39 int i, ret;
40 40
41 for (i = 0; i < sizeof(iio_direction) / sizeof(iio_direction[0]); i++) 41 for (i = 0; i < sizeof(iio_direction) / sizeof(iio_direction[0]); i++)
42 if (!strncmp(full_name, iio_direction[i], 42 if (!strncmp(full_name, iio_direction[i],
@@ -46,6 +46,9 @@ int iioutils_break_up_name(const char *full_name,
46 } 46 }
47 47
48 current = strdup(full_name + strlen(prefix) + 1); 48 current = strdup(full_name + strlen(prefix) + 1);
49 if (!current)
50 return -ENOMEM;
51
49 working = strtok(current, "_\0"); 52 working = strtok(current, "_\0");
50 53
51 w = working; 54 w = working;
@@ -59,10 +62,10 @@ int iioutils_break_up_name(const char *full_name,
59 r++; 62 r++;
60 } 63 }
61 *w = '\0'; 64 *w = '\0';
62 asprintf(generic_name, "%s_%s", prefix, working); 65 ret = asprintf(generic_name, "%s_%s", prefix, working);
63 free(current); 66 free(current);
64 67
65 return 0; 68 return (ret == -1) ? -ENOMEM : 0;
66} 69}
67 70
68/** 71/**
diff --git a/tools/iio/lsiio.c b/tools/iio/lsiio.c
index 65a2385e2a78..daa6c5312d66 100644
--- a/tools/iio/lsiio.c
+++ b/tools/iio/lsiio.c
@@ -107,7 +107,12 @@ static void dump_devices(void)
107 if (check_prefix(ent->d_name, type_device)) { 107 if (check_prefix(ent->d_name, type_device)) {
108 char *dev_dir_name; 108 char *dev_dir_name;
109 109
110 asprintf(&dev_dir_name, "%s%s", iio_dir, ent->d_name); 110 if (asprintf(&dev_dir_name, "%s%s", iio_dir,
111 ent->d_name) < 0) {
112 printf("Memory allocation failed\n");
113 goto error_close_dir;
114 }
115
111 dump_one_device(dev_dir_name); 116 dump_one_device(dev_dir_name);
112 free(dev_dir_name); 117 free(dev_dir_name);
113 if (verblevel >= VERBLEVEL_SENSORS) 118 if (verblevel >= VERBLEVEL_SENSORS)
@@ -119,11 +124,17 @@ static void dump_devices(void)
119 if (check_prefix(ent->d_name, type_trigger)) { 124 if (check_prefix(ent->d_name, type_trigger)) {
120 char *dev_dir_name; 125 char *dev_dir_name;
121 126
122 asprintf(&dev_dir_name, "%s%s", iio_dir, ent->d_name); 127 if (asprintf(&dev_dir_name, "%s%s", iio_dir,
128 ent->d_name) < 0) {
129 printf("Memory allocation failed\n");
130 goto error_close_dir;
131 }
132
123 dump_one_trigger(dev_dir_name); 133 dump_one_trigger(dev_dir_name);
124 free(dev_dir_name); 134 free(dev_dir_name);
125 } 135 }
126 } 136 }
137error_close_dir:
127 closedir(dp); 138 closedir(dp);
128} 139}
129 140