15
15
#include " Logger.h"
16
16
#include < numeric>
17
17
#include < sstream>
18
+ #include < memory>
18
19
#ifdef _MSC_VER
19
20
# include < time.h>
20
21
# include " SystemUtils.h"
@@ -294,7 +295,7 @@ namespace pcpp
294
295
295
296
// first, get ptr and data length of the raw packet
296
297
const uint8_t * dataPtr = m_RawPacket->getRawData ();
297
- size_t dataLen = ( size_t ) m_RawPacket->getRawDataLen ();
298
+ size_t dataLen = static_cast < size_t >( m_RawPacket->getRawDataLen () );
298
299
299
300
// if a packet trailer exists, get its length
300
301
size_t packetTrailerLen = 0 ;
@@ -306,7 +307,7 @@ namespace pcpp
306
307
while (curLayer != nullptr )
307
308
{
308
309
// set data ptr to layer
309
- curLayer->m_Data = ( uint8_t *) dataPtr;
310
+ curLayer->m_Data = const_cast < uint8_t *>( dataPtr) ;
310
311
311
312
// there is an assumption here that the packet trailer, if exists, corresponds to the L2 (data link) layers.
312
313
// so if there is a packet trailer and this layer is L2 (data link), set its data length to contain the
@@ -427,16 +428,15 @@ namespace pcpp
427
428
// before removing the layer's data, copy it so it can be later assigned as the removed layer's data
428
429
size_t headerLen = layer->getHeaderLen ();
429
430
size_t layerOldDataSize = headerLen;
430
- uint8_t * layerOldData = new uint8_t [layerOldDataSize] ;
431
- memcpy (layerOldData, layer->m_Data , layerOldDataSize);
431
+ auto layerOldData = std::make_unique< uint8_t []>(layerOldDataSize) ;
432
+ memcpy (layerOldData. get () , layer->m_Data , layerOldDataSize);
432
433
433
434
// remove data from raw packet
434
435
size_t numOfBytesToRemove = headerLen;
435
436
int indexOfDataToRemove = layer->m_Data - m_RawPacket->getRawData ();
436
437
if (!m_RawPacket->removeData (indexOfDataToRemove, numOfBytesToRemove))
437
438
{
438
439
PCPP_LOG_ERROR (" Couldn't remove data from packet" );
439
- delete[] layerOldData;
440
440
return false ;
441
441
}
442
442
@@ -463,15 +463,15 @@ namespace pcpp
463
463
464
464
// first, get ptr and data length of the raw packet
465
465
const uint8_t * dataPtr = m_RawPacket->getRawData ();
466
- size_t dataLen = ( size_t ) m_RawPacket->getRawDataLen ();
466
+ size_t dataLen = static_cast < size_t >( m_RawPacket->getRawDataLen () );
467
467
468
468
curLayer = m_FirstLayer;
469
469
470
470
// go over all layers from the first layer to the last layer and set the data ptr and data length for each one
471
471
while (curLayer != nullptr )
472
472
{
473
473
// set data ptr to layer
474
- curLayer->m_Data = ( uint8_t *) dataPtr;
474
+ curLayer->m_Data = const_cast < uint8_t *>( dataPtr) ;
475
475
476
476
// there is an assumption here that the packet trailer, if exists, corresponds to the L2 (data link) layers.
477
477
// so if there is a packet trailer and this layer is L2 (data link), set its data length to contain the
@@ -494,14 +494,13 @@ namespace pcpp
494
494
if (tryToDelete && layer->m_IsAllocatedInPacket )
495
495
{
496
496
delete layer;
497
- delete[] layerOldData;
498
497
}
499
498
// if layer was not allocated by this packet or the tryToDelete is not set, detach it from the packet so it can
500
499
// be reused
501
500
else
502
501
{
503
502
layer->m_Packet = nullptr ;
504
- layer->m_Data = layerOldData;
503
+ layer->m_Data = layerOldData. release () ;
505
504
layer->m_DataLen = layerOldDataSize;
506
505
}
507
506
0 commit comments