From 60950dd032545eae4e281b2d0e46ea9e77ad405a Mon Sep 17 00:00:00 2001 From: mikeller Date: Tue, 18 Dec 2018 01:34:11 +1300 Subject: [PATCH] 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)); } } }