From 7e796f13f95812376e8f62fe68b53f826ea0199a Mon Sep 17 00:00:00 2001 From: janhauer Date: Mon, 27 Apr 2009 09:42:08 +0000 Subject: [PATCH] frame must only be accessed in active/orphan scan --- tos/lib/mac/tkn154/ScanP.nc | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/tos/lib/mac/tkn154/ScanP.nc b/tos/lib/mac/tkn154/ScanP.nc index 366ccb7a..a92fc5ac 100644 --- a/tos/lib/mac/tkn154/ScanP.nc +++ b/tos/lib/mac/tkn154/ScanP.nc @@ -132,26 +132,28 @@ implementation } else if (security && security->SecurityLevel) { status = IEEE154_UNSUPPORTED_SECURITY; } if ((ScanType > 3) || (ScanType < 3 && ScanDuration > 14) || - (ChannelPage != IEEE154_SUPPORTED_CHANNELPAGE) || - !(supportedChannels & ScanChannels) || - ((ScanType != ORPHAN_SCAN) && - ((EnergyDetectListNumEntries && PANDescriptorListNumEntries) || + (ChannelPage != IEEE154_SUPPORTED_CHANNELPAGE) || + !(supportedChannels & ScanChannels) || + ((ScanType != ORPHAN_SCAN) && + ((EnergyDetectListNumEntries && PANDescriptorListNumEntries) || (EnergyDetectList != NULL && PANDescriptorList != NULL) || (EnergyDetectListNumEntries && EnergyDetectList == NULL) || (PANDescriptorListNumEntries && PANDescriptorList == NULL)))) { status = IEEE154_INVALID_PARAMETER; - } else if (ScanType != ENERGY_DETECTION_SCAN && - !(m_txFrame = call TxFramePool.get())) { + } else if ((ScanType == ACTIVE_SCAN || ScanType == ORPHAN_SCAN) && + ((m_txFrame = call TxFramePool.get()) == NULL)) { status = IEEE154_TRANSACTION_OVERFLOW; - } else if (ScanType != ENERGY_DETECTION_SCAN && - !(txControl = call TxControlPool.get())) { + } else if ((ScanType == ACTIVE_SCAN || ScanType == ORPHAN_SCAN) && + ((txControl = call TxControlPool.get()) == NULL)) { call TxFramePool.put(m_txFrame); m_txFrame = NULL; status = IEEE154_TRANSACTION_OVERFLOW; } else { - m_txFrame->header = &txControl->header; - m_txFrame->payload = m_payload; - m_txFrame->metadata = &txControl->metadata; + if (m_txFrame != NULL){ + m_txFrame->header = &txControl->header; + m_txFrame->payload = m_payload; + m_txFrame->metadata = &txControl->metadata; + } m_busy = TRUE; m_scanType = ScanType; m_scanChannels = ScanChannels; -- 2.39.2