Coverage Report

Created: 2026-04-12 07:26

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/PcapPlusPlus/Packet++/src/PayloadLayer.cpp
Line
Count
Source
1
#define LOG_MODULE PacketLogModulePayloadLayer
2
3
#include "PayloadLayer.h"
4
#include "GeneralUtils.h"
5
#include <sstream>
6
#include <cstring>
7
8
namespace pcpp
9
{
10
11
0
  PayloadLayer::PayloadLayer(const uint8_t* data, size_t dataLen) : Layer()
12
0
  {
13
0
    m_Data = new uint8_t[dataLen];
14
0
    memcpy(m_Data, data, dataLen);
15
0
    m_DataLen = dataLen;
16
0
    m_Protocol = GenericPayload;
17
0
  }
18
19
  PayloadLayer::PayloadLayer(const std::string& payloadAsHexStream)
20
0
  {
21
0
    m_DataLen = payloadAsHexStream.length() / 2;
22
0
    m_Data = new uint8_t[m_DataLen];
23
0
    m_Protocol = GenericPayload;
24
0
    if (hexStringToByteArray(payloadAsHexStream, m_Data, m_DataLen) == 0)
25
0
    {
26
0
      delete[] m_Data;
27
0
      m_Data = nullptr;
28
0
      m_DataLen = 0;
29
0
    }
30
0
  }
31
32
  void PayloadLayer::setPayload(const uint8_t* newPayload, size_t newPayloadLength)
33
0
  {
34
0
    if (newPayloadLength < m_DataLen)
35
0
    {
36
      // shorten payload layer
37
0
      shortenLayer(newPayloadLength, m_DataLen - newPayloadLength);
38
0
    }
39
0
    else if (newPayloadLength > m_DataLen)
40
0
    {
41
      // extend payload layer
42
0
      extendLayer(m_DataLen, newPayloadLength - m_DataLen);
43
0
    }
44
45
    // and copy data to layer
46
    // this is also executed if the newPayloadLength == m_DataLen
47
0
    memcpy(m_Data, newPayload, newPayloadLength);
48
0
  }
49
50
  std::string PayloadLayer::toString() const
51
123k
  {
52
123k
    std::ostringstream dataLenStream;
53
123k
    dataLenStream << m_DataLen;
54
55
123k
    return "Payload Layer, Data length: " + dataLenStream.str() + " [Bytes]";
56
123k
  }
57
58
}  // namespace pcpp