From 91452e5c830b7ef1ffefce9ba8e3a6f390b4d0f2 Mon Sep 17 00:00:00 2001 From: Brendan Le Foll Date: Fri, 11 Mar 2016 16:36:40 +0000 Subject: [PATCH] firmata.c: fix possible crash if devs is wrong Signed-off-by: Brendan Le Foll --- src/firmata/firmata.c | 6 +++--- src/firmata/firmata_mraa.c | 4 ++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/firmata/firmata.c b/src/firmata/firmata.c index 563ecce..18a9a61 100644 --- a/src/firmata/firmata.c +++ b/src/firmata/firmata.c @@ -245,9 +245,9 @@ firmata_endParse(t_firmata* firmata) printf("i2c reply is %d\n", firmata->i2cmsg[addr][reg]); #endif } else { - struct _firmata* devs = firmata->devs[0]; - int i = 0; - if (devs != NULL) { + if (firmata->devs != NULL) { + struct _firmata* devs = firmata->devs[0]; + int i = 0; for (i; i < firmata->dev_count; i++, devs++) { if (devs != NULL) { if (firmata->parse_buff[1] == devs->feature) { diff --git a/src/firmata/firmata_mraa.c b/src/firmata/firmata_mraa.c index d2d441b..8515cda 100644 --- a/src/firmata/firmata_mraa.c +++ b/src/firmata/firmata_mraa.c @@ -464,6 +464,10 @@ mraa_firmata_plat_init(const char* uart_dev) } firmata_dev = firmata_new(uart_dev); + if (firmata_dev == NULL) { + free(b); + return NULL; + } // if this isn't working then we have an issue with our uart while (!firmata_dev->isReady) {