From 33336ecccc1c9952ba2e36a4ba825b79aa90f76e Mon Sep 17 00:00:00 2001 From: Federico Amedeo Izzo Date: Sat, 23 Jan 2021 10:38:18 +0100 Subject: [PATCH] CPS: Return -1 when reading an empty channel or zone --- platform/drivers/NVM/nvmem_MDUV3x0.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/platform/drivers/NVM/nvmem_MDUV3x0.c b/platform/drivers/NVM/nvmem_MDUV3x0.c index f8158618..bfebaf0f 100644 --- a/platform/drivers/NVM/nvmem_MDUV3x0.c +++ b/platform/drivers/NVM/nvmem_MDUV3x0.c @@ -18,7 +18,7 @@ * along with this program; if not, see * ***************************************************************************/ -#include +#include #include #include #include @@ -244,6 +244,9 @@ int nvm_readChannelData(channel_t *channel, uint16_t pos) W25Qx_readData(readAddr, ((uint8_t *) &chData), sizeof(mduv3x0Channel_t)); W25Qx_sleep(); + // Check if the channel is empty + if(wcslen((wchar_t *) chData.name) == 0) return -1; + channel->mode = chData.channel_mode - 1; channel->bandwidth = chData.bandwidth; channel->admit_criteria = chData.admit_criteria; @@ -337,6 +340,8 @@ int nvm_readZoneData(zone_t *zone, uint16_t pos) W25Qx_readData(zoneExtAddr, ((uint8_t *) &zoneExtData), sizeof(mduv3x0ZoneExt_t)); W25Qx_sleep(); + // Check if zone is empty + if(wcslen((wchar_t *) zoneData.name) == 0) return -1; /* * Brutally convert channel name from unicode to char by truncating the most * significant byte