From 60950dd032545eae4e281b2d0e46ea9e77ad405a Mon Sep 17 00:00:00 2001 From: mikeller Date: Tue, 18 Dec 2018 01:34:11 +1300 Subject: [PATCH 1/2] Fixed NULL dereference in 'printResource'. --- src/main/interface/cli.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/main/interface/cli.c b/src/main/interface/cli.c index 711bd6b8e9..8ff747779b 100644 --- a/src/main/interface/cli.c +++ b/src/main/interface/cli.c @@ -3978,22 +3978,23 @@ static void printResource(uint8_t dumpMask) for (int index = 0; index < MAX_RESOURCE_INDEX(resourceTable[i].maxIndex); index++) { const ioTag_t ioTag = *((const uint8_t *)currentConfig + resourceTable[i].stride * index + resourceTable[i].offset); - const ioTag_t ioTagDefault = *((const uint8_t *)defaultConfig + resourceTable[i].stride * index + resourceTable[i].offset); + ioTag_t ioTagDefault = NULL; + if (defaultConfig) { + ioTagDefault = *((const uint8_t *)defaultConfig + resourceTable[i].stride * index + resourceTable[i].offset); + } - bool equalsDefault = ioTag == ioTagDefault; + const bool equalsDefault = ioTag == ioTagDefault; const char *format = "resource %s %d %c%02d"; const char *formatUnassigned = "resource %s %d NONE"; - if (!ioTagDefault) { - cliDefaultPrintLinef(dumpMask, equalsDefault, formatUnassigned, owner, RESOURCE_INDEX(index)); - } else { + if (ioTagDefault) { cliDefaultPrintLinef(dumpMask, equalsDefault, format, owner, RESOURCE_INDEX(index), IO_GPIOPortIdxByTag(ioTagDefault) + 'A', IO_GPIOPinIdxByTag(ioTagDefault)); + } else if (defaultConfig) { + cliDefaultPrintLinef(dumpMask, equalsDefault, formatUnassigned, owner, RESOURCE_INDEX(index)); } - if (!ioTag) { - if (!(dumpMask & HIDE_UNUSED)) { - cliDumpPrintLinef(dumpMask, equalsDefault, formatUnassigned, owner, RESOURCE_INDEX(index)); - } - } else { + if (ioTag) { cliDumpPrintLinef(dumpMask, equalsDefault, format, owner, RESOURCE_INDEX(index), IO_GPIOPortIdxByTag(ioTag) + 'A', IO_GPIOPinIdxByTag(ioTag)); + } else if (!(dumpMask & HIDE_UNUSED)) { + cliDumpPrintLinef(dumpMask, equalsDefault, formatUnassigned, owner, RESOURCE_INDEX(index)); } } } From 266a7085d93180bfe69a7c9c952dcdee28404047 Mon Sep 17 00:00:00 2001 From: mikeller Date: Tue, 18 Dec 2018 02:18:08 +1300 Subject: [PATCH 2/2] Fixed casts. --- src/main/interface/cli.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/interface/cli.c b/src/main/interface/cli.c index 8ff747779b..9d795b2cca 100644 --- a/src/main/interface/cli.c +++ b/src/main/interface/cli.c @@ -3977,10 +3977,10 @@ static void printResource(uint8_t dumpMask) } for (int index = 0; index < MAX_RESOURCE_INDEX(resourceTable[i].maxIndex); index++) { - const ioTag_t ioTag = *((const uint8_t *)currentConfig + resourceTable[i].stride * index + resourceTable[i].offset); + const ioTag_t ioTag = *(ioTag_t *)((const uint8_t *)currentConfig + resourceTable[i].stride * index + resourceTable[i].offset); ioTag_t ioTagDefault = NULL; if (defaultConfig) { - ioTagDefault = *((const uint8_t *)defaultConfig + resourceTable[i].stride * index + resourceTable[i].offset); + ioTagDefault = *(ioTag_t *)((const uint8_t *)defaultConfig + resourceTable[i].stride * index + resourceTable[i].offset); } const bool equalsDefault = ioTag == ioTagDefault;