1515#include " Logger.h"
1616#include < numeric>
1717#include < sstream>
18+ #include < memory>
1819#ifdef _MSC_VER
1920# include < time.h>
2021# include " SystemUtils.h"
@@ -294,7 +295,7 @@ namespace pcpp
294295
295296 // first, get ptr and data length of the raw packet
296297 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 () );
298299
299300 // if a packet trailer exists, get its length
300301 size_t packetTrailerLen = 0 ;
@@ -306,7 +307,7 @@ namespace pcpp
306307 while (curLayer != nullptr )
307308 {
308309 // set data ptr to layer
309- curLayer->m_Data = ( uint8_t *) dataPtr;
310+ curLayer->m_Data = const_cast < uint8_t *>( dataPtr) ;
310311
311312 // there is an assumption here that the packet trailer, if exists, corresponds to the L2 (data link) layers.
312313 // 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
427428 // before removing the layer's data, copy it so it can be later assigned as the removed layer's data
428429 size_t headerLen = layer->getHeaderLen ();
429430 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);
432433
433434 // remove data from raw packet
434435 size_t numOfBytesToRemove = headerLen;
435436 int indexOfDataToRemove = layer->m_Data - m_RawPacket->getRawData ();
436437 if (!m_RawPacket->removeData (indexOfDataToRemove, numOfBytesToRemove))
437438 {
438439 PCPP_LOG_ERROR (" Couldn't remove data from packet" );
439- delete[] layerOldData;
440440 return false ;
441441 }
442442
@@ -463,15 +463,15 @@ namespace pcpp
463463
464464 // first, get ptr and data length of the raw packet
465465 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 () );
467467
468468 curLayer = m_FirstLayer;
469469
470470 // go over all layers from the first layer to the last layer and set the data ptr and data length for each one
471471 while (curLayer != nullptr )
472472 {
473473 // set data ptr to layer
474- curLayer->m_Data = ( uint8_t *) dataPtr;
474+ curLayer->m_Data = const_cast < uint8_t *>( dataPtr) ;
475475
476476 // there is an assumption here that the packet trailer, if exists, corresponds to the L2 (data link) layers.
477477 // 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
494494 if (tryToDelete && layer->m_IsAllocatedInPacket )
495495 {
496496 delete layer;
497- delete[] layerOldData;
498497 }
499498 // if layer was not allocated by this packet or the tryToDelete is not set, detach it from the packet so it can
500499 // be reused
501500 else
502501 {
503502 layer->m_Packet = nullptr ;
504- layer->m_Data = layerOldData;
503+ layer->m_Data = layerOldData. release () ;
505504 layer->m_DataLen = layerOldDataSize;
506505 }
507506
0 commit comments