EthernetPacketizer: do a size check on incoming bytestream
An incoming bytestream can be less than 24 bytes, leading to exceptions when accessing its data (or allocating the vector for its payload). Perform a size check before trying to decode the bytestream and discard invalid incoming streams. Signed-off-by: Francesco Valla <francesco.valla@mta.it>pull/76/head
parent
c056e8dc2e
commit
31d4a750d8
|
|
@ -133,6 +133,10 @@ EthernetPacketizer::EthernetPacket::EthernetPacket(const uint8_t* data, size_t s
|
||||||
|
|
||||||
int EthernetPacketizer::EthernetPacket::loadBytestream(const std::vector<uint8_t>& bytestream) {
|
int EthernetPacketizer::EthernetPacket::loadBytestream(const std::vector<uint8_t>& bytestream) {
|
||||||
errorWhileDecodingFromBytestream = 0;
|
errorWhileDecodingFromBytestream = 0;
|
||||||
|
if (bytestream.size() < 24) {
|
||||||
|
errorWhileDecodingFromBytestream = 1;
|
||||||
|
return errorWhileDecodingFromBytestream;
|
||||||
|
}
|
||||||
for(size_t i = 0; i < 6; i++)
|
for(size_t i = 0; i < 6; i++)
|
||||||
destMAC[i] = bytestream[i];
|
destMAC[i] = bytestream[i];
|
||||||
for(size_t i = 0; i < 6; i++)
|
for(size_t i = 0; i < 6; i++)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue