Coverage Report

Created: 2024-02-25 06:29

/src/PcapPlusPlus/Packet++/src/PayloadLayer.cpp
Line
Count
Source (jump to first uncovered line)
1
#define LOG_MODULE PacketLogModulePayloadLayer
2
3
#include "PayloadLayer.h"
4
#include "GeneralUtils.h"
5
#include <string.h>
6
#include <sstream>
7
8
namespace pcpp
9
{
10
11
PayloadLayer::PayloadLayer(const uint8_t* data, size_t dataLen, bool) : 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
219k
{
52
219k
  std::ostringstream dataLenStream;
53
219k
  dataLenStream << m_DataLen;
54
55
219k
  return "Payload Layer, Data length: " + dataLenStream.str() + " [Bytes]";
56
219k
}
57
58
} // namespace pcpp