1
0
mirror of https://github.com/mfontanini/libtins synced 2026-01-23 02:35:57 +01:00

Fixed bug triggered on Dot3 serialization.

In addition, Dot3 now always sets the packet length on
serialization.
This commit is contained in:
Matias Fontanini
2014-08-30 23:02:41 -03:00
parent a7a4105cf8
commit 7135473d19

View File

@@ -127,18 +127,12 @@ bool Dot3::matches_response(const uint8_t *ptr, uint32_t total_sz) const {
} }
void Dot3::write_serialization(uint8_t *buffer, uint32_t total_sz, const PDU *parent) { void Dot3::write_serialization(uint8_t *buffer, uint32_t total_sz, const PDU *parent) {
bool set_length = _eth.length == 0;
#ifdef TINS_DEBUG #ifdef TINS_DEBUG
assert(total_sz >= header_size()); assert(total_sz >= header_size());
#endif #endif
_eth.length = Endian::host_to_be<uint16_t>(size() - sizeof(_eth));
if (set_length)
_eth.length = Endian::host_to_be(size() - sizeof(_eth));
memcpy(buffer, &_eth, sizeof(ethhdr)); memcpy(buffer, &_eth, sizeof(ethhdr));
if (set_length)
_eth.length = 0;
} }
#ifndef WIN32 #ifndef WIN32