diff options
author | Hartmut Knaack <knaack.h@gmx.de> | 2015-05-31 08:40:02 -0400 |
---|---|---|
committer | Jonathan Cameron <jic23@kernel.org> | 2015-05-31 14:21:10 -0400 |
commit | e9e45b43b8f06273d9b78f187042dff0bf5be0a5 (patch) | |
tree | 2e0bb238e6b234a12366c545e879b9b6646b9985 /tools/iio | |
parent | 2156b179993e3d5b422976181ba17d91153313e1 (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.c | 4 | ||||
-rw-r--r-- | tools/iio/iio_event_monitor.c | 2 | ||||
-rw-r--r-- | tools/iio/iio_utils.c | 9 | ||||
-rw-r--r-- | tools/iio/lsiio.c | 15 |
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 | } |
137 | error_close_dir: | ||
127 | closedir(dp); | 138 | closedir(dp); |
128 | } | 139 | } |
129 | 140 | ||