X-Git-Url: https://oss.titaniummirror.com/gitweb/?a=blobdiff_plain;f=tos%2Flib%2Fmac%2Ftkn154%2FDataP.nc;h=4b541962e25665a2cde708b8ddeb3b76648b6c71;hb=bd9dd78d2699882e732caef8be76b0fa975bced6;hp=1153b7a41a6a8fcb4225db3f9980188771678274;hpb=649301ea378cd6515b70a6e38215522df50273de;p=tinyos-2.x.git diff --git a/tos/lib/mac/tkn154/DataP.nc b/tos/lib/mac/tkn154/DataP.nc index 1153b7a4..4b541962 100644 --- a/tos/lib/mac/tkn154/DataP.nc +++ b/tos/lib/mac/tkn154/DataP.nc @@ -88,9 +88,10 @@ implementation ieee154_status_t txStatus; ieee154_txframe_t *txFrame; uint8_t sfType=0; - uint8_t *mhr; + uint8_t *mhr, mhrLen = call Frame.getHeaderLength(frame); - if (payloadLen > call Packet.maxPayloadLength()) + if (payloadLen > call Packet.maxPayloadLength() || + mhrLen + payloadLen + 2 > IEEE154_aMaxPHYPacketSize) // extra 2 for MAC footer (CRC) txStatus = IEEE154_INVALID_PARAMETER; else if ((!srcAddrMode && !dstAddrMode) || (srcAddrMode > ADDR_MODE_EXTENDED_ADDRESS || dstAddrMode > ADDR_MODE_EXTENDED_ADDRESS) || @@ -105,7 +106,7 @@ implementation txFrame->metadata = &((message_metadata_t*) frame->metadata)->ieee154; txFrame->payloadLen = payloadLen; mhr = txFrame->header->mhr; - txFrame->headerLen = call Frame.getHeaderLength(frame); + txFrame->headerLen = mhrLen; mhr[MHR_INDEX_FC1] &= ~(FC1_FRAMETYPE_MASK | FC1_FRAME_PENDING | FC1_ACK_REQUEST); mhr[MHR_INDEX_FC1] |= FC1_FRAMETYPE_DATA; if (txOptions & TX_OPTIONS_ACK)