core: fix segfault in gpiod_line_find_by_name()
authorBartosz Golaszewski <bartekgola@gmail.com>
Mon, 9 Jan 2017 11:54:54 +0000 (12:54 +0100)
committerBartosz Golaszewski <bartekgola@gmail.com>
Mon, 9 Jan 2017 11:54:54 +0000 (12:54 +0100)
We need to check whether gpiod_line_name() didn't return NULL.

Signed-off-by: Bartosz Golaszewski <bartekgola@gmail.com>
core.c

diff --git a/core.c b/core.c
index de5dff23fc92355980f322e7c28989b73110d134..78e25f26e852ba94335de37d036156fe7758672e 100644 (file)
--- a/core.c
+++ b/core.c
@@ -513,6 +513,7 @@ struct gpiod_line * gpiod_line_find_by_name(const char *name)
        struct gpiod_line_iter line_iter;
        struct gpiod_chip *chip;
        struct gpiod_line *line;
+       const char *line_name;
 
        chip_iter = gpiod_chip_iter_new();
        if (!chip_iter)
@@ -521,6 +522,10 @@ struct gpiod_line * gpiod_line_find_by_name(const char *name)
        gpiod_foreach_chip(chip_iter, chip) {
                gpiod_line_iter_init(&line_iter, chip);
                gpiod_foreach_line(&line_iter, line) {
+                       line_name = gpiod_line_name(line);
+                       if (!line_name)
+                               continue;
+
                        if (strcmp(gpiod_line_name(line), name) == 0) {
                                /* TODO A separate function for that maybe? */
                                closedir(chip_iter->dir);