Hello everyone,

Normally, if a packet is corrupted, the CRC is supposed to detect and
discard it, at least with very high probability. However, if the corruption
happens on the length field, are these issues handled by the radio stack?

1) the corrupted length is larger than the actual bytes buffered in RXFIFO,
and RXFIFO.beginRead() or RXFIFO.continueRead() is called to
read rxFrameLength bytes from it. What could happen in this case? Underflow?

2) the CRC is read at the wrong offset ((buf[rxFrameLength] >> 7)). And it
can happen to be 1, causing the corrupted packet to be signaled to upper
layers as a correct packet even though it is not.

3) this has a cascade effect if there are additional packets buffered in
RXFIFO after this corrupted one. Their lengths can also be mistaken because
the previous packet uses a wrong boundary, identified by the wrong length
field.

This seems a severe issue but I haven't found any measure to cope with it
in the stack. Can anyone please give me a hint? Thanks sincerely in advance.

-- TelosB
-Xiaohui Liu
_______________________________________________
Tinyos-help mailing list
[email protected]
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help

Reply via email to