Skip to content

Unaligned packet field (UBSanitizer error report) plus warnings... #2001

@nbooster

Description

@nbooster

Hello,

I just observer this from the UBSanitizer(GCC: -fsanitize=undefined):

/home/.../pcap++-src/Packet++/header/Packet.h:347:8: runtime error: member access within address 0x79e286800cb0 which does not point to an object of type 'Packet'
0x79e286800cb0: note: object has invalid vptr
 00 00 00 00  10 98 85 00 00 00 00 00  60 0c 80 86 e2 79 00 00  e0 b1 00 00 60 50 00 00  00 b3 00 00
              ^~~~~~~~~~~~~~~~~~~~~~~
              invalid vptr
/home/.../pcap++-src/Packet++/header/Packet.h:112:22: runtime error: member call on address 0x79e286800cb0 which does not point to an object of type 'Packet'
0x79e286800cb0: note: object has invalid vptr
 00 00 00 00  10 98 85 00 00 00 00 00  60 0c 80 86 e2 79 00 00  e0 b1 00 00 60 50 00 00  00 b3 00 00
              ^~~~~~~~~~~~~~~~~~~~~~~
              invalid vptr

That implies unaligned memory access (which slows down the program most of the times).

I am just reading a compressed pcapng file using these functions only:

pcpp::PcapNgFileReaderDevice reader(filePath.data());
reader.open();
pcpp::RawPacket rawPacket;
reader.getNextPacket(rawPacket);
pcpp::Packet parsedPacket(std::addressof(rawPacket));
parsedPacket.isPacketOfType(pcpp::TCP);
tcpLayer->getLayerPayloadSize();
udpLayer->getLayerPayload();
parsedPacket.getLayerOfType<pcpp::TcpLayer>();

Also I get multiple warnings of these types:

-Weffc++
-Wsuggest-override
-Wconversion
-Wpedantic
-Wold-style-cast

when I include these files:

#include <Packet.h>
#include <UdpLayer.h>
#include <TcpLayer.h>
#include <PcapFileDevice.h>

It would be nice if these can get fixed somehow...

Thank You.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions