Coverage Report

Created: 2026-08-13 07:36

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
    allocData(dataLen, false);
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_Protocol = GenericPayload;
22
0
    auto const dataLen = payloadAsHexStream.size() / 2;
23
0
    if (dataLen > 0)
24
0
    {
25
0
      allocData(dataLen, false);
26
0
      if (hexStringToByteArray(payloadAsHexStream, m_Data, m_DataLen) == 0)
27
0
      {
28
        // TODO: Move to base Layer class.
29
0
        delete[] m_Data;
30
0
        m_Data = nullptr;
31
0
        m_DataLen = 0;
32
0
      }
33
0
    }
34
0
  }
35
36
  void PayloadLayer::setPayload(const uint8_t* newPayload, size_t newPayloadLength)
37
0
  {
38
0
    if (newPayloadLength < m_DataLen)
39
0
    {
40
      // shorten payload layer
41
0
      shortenLayer(newPayloadLength, m_DataLen - newPayloadLength);
42
0
    }
43
0
    else if (newPayloadLength > m_DataLen)
44
0
    {
45
      // extend payload layer
46
0
      extendLayer(m_DataLen, newPayloadLength - m_DataLen);
47
0
    }
48
49
    // and copy data to layer
50
    // this is also executed if the newPayloadLength == m_DataLen
51
0
    memcpy(m_Data, newPayload, newPayloadLength);
52
0
  }
53
54
  std::string PayloadLayer::toString() const
55
104k
  {
56
104k
    std::ostringstream dataLenStream;
57
104k
    dataLenStream << m_DataLen;
58
59
104k
    return "Payload Layer, Data length: " + dataLenStream.str() + " [Bytes]";
60
104k
  }
61
62
}  // namespace pcpp