View | Details | Raw Unified | Return to bug 1050
Collapse All | Expand All

(-)a/src/internet/model/icmpv6-header.cc (-5 / +10 lines)
 Lines 1008-1014    Link Here 
1008
uint32_t Icmpv6DestinationUnreachable::Deserialize (Buffer::Iterator start)
1008
uint32_t Icmpv6DestinationUnreachable::Deserialize (Buffer::Iterator start)
1009
{
1009
{
1010
  uint16_t length = start.GetSize () - 8;
1010
  uint16_t length = start.GetSize () - 8;
1011
  uint8_t data[length];
1011
  uint8_t* data = new uint8_t[length];
1012
  Buffer::Iterator i = start;
1012
  Buffer::Iterator i = start;
1013
1013
1014
  SetType (i.ReadU8 ());
1014
  SetType (i.ReadU8 ());
 Lines 1018-1023    Link Here 
1018
  i.Read (data, length);
1018
  i.Read (data, length);
1019
  m_packet = Create<Packet> (data, length);
1019
  m_packet = Create<Packet> (data, length);
1020
1020
1021
  delete[] data;
1021
  return GetSerializedSize ();
1022
  return GetSerializedSize ();
1022
}
1023
}
1023
1024
 Lines 1106-1112    Link Here 
1106
uint32_t Icmpv6TooBig::Deserialize (Buffer::Iterator start) 
1107
uint32_t Icmpv6TooBig::Deserialize (Buffer::Iterator start) 
1107
{
1108
{
1108
  uint16_t length = start.GetSize () - 8;
1109
  uint16_t length = start.GetSize () - 8;
1109
  uint8_t data[length];
1110
  uint8_t* data = new uint8_t[length];
1110
  Buffer::Iterator i = start;
1111
  Buffer::Iterator i = start;
1111
1112
1112
  SetType (i.ReadU8 ());
1113
  SetType (i.ReadU8 ());
 Lines 1116-1121    Link Here 
1116
  i.Read (data, length);
1117
  i.Read (data, length);
1117
  m_packet = Create<Packet> (data, length);
1118
  m_packet = Create<Packet> (data, length);
1118
1119
1120
  delete[] data;
1119
  return GetSerializedSize ();
1121
  return GetSerializedSize ();
1120
}
1122
}
1121
1123
 Lines 1193-1199    Link Here 
1193
uint32_t Icmpv6TimeExceeded::Deserialize (Buffer::Iterator start)
1195
uint32_t Icmpv6TimeExceeded::Deserialize (Buffer::Iterator start)
1194
{
1196
{
1195
  uint16_t length = start.GetSize () - 8;
1197
  uint16_t length = start.GetSize () - 8;
1196
  uint8_t data[length];
1198
  uint8_t* data = new uint8_t[length];
1197
  Buffer::Iterator i = start;
1199
  Buffer::Iterator i = start;
1198
1200
1199
  SetType (i.ReadU8 ());
1201
  SetType (i.ReadU8 ());
 Lines 1203-1208    Link Here 
1203
  i.Read (data, length);
1205
  i.Read (data, length);
1204
  m_packet = Create<Packet> (data, length);
1206
  m_packet = Create<Packet> (data, length);
1205
1207
1208
  delete[] data;
1206
  return GetSerializedSize ();
1209
  return GetSerializedSize ();
1207
}
1210
}
1208
1211
 Lines 1291-1297    Link Here 
1291
uint32_t Icmpv6ParameterError::Deserialize (Buffer::Iterator start) 
1294
uint32_t Icmpv6ParameterError::Deserialize (Buffer::Iterator start) 
1292
{
1295
{
1293
  uint16_t length = start.GetSize () - 8;
1296
  uint16_t length = start.GetSize () - 8;
1294
  uint8_t data[length];
1297
  uint8_t* data = new uint8_t[length];
1295
  Buffer::Iterator i = start;
1298
  Buffer::Iterator i = start;
1296
1299
1297
  SetType (i.ReadU8 ());
1300
  SetType (i.ReadU8 ());
 Lines 1300-1305    Link Here 
1300
  SetPtr (i.ReadNtohU32 ());
1303
  SetPtr (i.ReadNtohU32 ());
1301
  i.Read (data, length);
1304
  i.Read (data, length);
1302
  m_packet = Create<Packet> (data, length);
1305
  m_packet = Create<Packet> (data, length);
1306
  delete[] data;
1303
1307
1304
  return GetSerializedSize ();
1308
  return GetSerializedSize ();
1305
}
1309
}
 Lines 1777-1785    Link Here 
1777
  i.ReadU32 ();
1781
  i.ReadU32 ();
1778
1782
1779
  uint32_t len2 = (GetLength () - 1) * 8;
1783
  uint32_t len2 = (GetLength () - 1) * 8;
1780
  uint8_t buff[len2];
1784
  uint8_t* buff = new uint8_t[len2];
1781
  i.Read (buff, len2);
1785
  i.Read (buff, len2);
1782
  m_packet = Create<Packet> (buff, len2);
1786
  m_packet = Create<Packet> (buff, len2);
1787
  delete[] buff;
1783
1788
1784
  return GetSerializedSize ();
1789
  return GetSerializedSize ();
1785
}
1790
}
(-)a/src/internet/model/icmpv6-l4-protocol.cc (-1 / +2 lines)
 Lines 232-238    Link Here 
232
{
232
{
233
  NS_LOG_FUNCTION (this << packet << src << dst << interface);
233
  NS_LOG_FUNCTION (this << packet << src << dst << interface);
234
  Icmpv6Echo request;
234
  Icmpv6Echo request;
235
  uint8_t buf[packet->GetSize ()];
235
  uint8_t* buf = new uint8_t[packet->GetSize ()];
236
236
237
  packet->RemoveHeader (request);
237
  packet->RemoveHeader (request);
238
  /* XXX IPv6 extension: obtain a fresh copy of data otherwise it crash... */
238
  /* XXX IPv6 extension: obtain a fresh copy of data otherwise it crash... */
 Lines 241-246    Link Here 
241
241
242
  /* if we send message from ff02::* (link-local multicast), we use our link-local address */
242
  /* if we send message from ff02::* (link-local multicast), we use our link-local address */
243
  SendEchoReply (dst.IsMulticast () ? interface->GetLinkLocalAddress ().GetAddress () : dst, src, request.GetId (), request.GetSeq (), p);
243
  SendEchoReply (dst.IsMulticast () ? interface->GetLinkLocalAddress ().GetAddress () : dst, src, request.GetId (), request.GetSeq (), p);
244
  delete[] buf;
244
}
245
}
245
246
246
void Icmpv6L4Protocol::HandleRA (Ptr<Packet> packet, Ipv6Address const &src, Ipv6Address const &dst, Ptr<Ipv6Interface> interface)
247
void Icmpv6L4Protocol::HandleRA (Ptr<Packet> packet, Ipv6Address const &src, Ipv6Address const &dst, Ptr<Ipv6Interface> interface)
(-)a/src/internet/model/ipv6-extension-header.cc (-2 / +4 lines)
 Lines 102-108    Link Here 
102
  m_length = i.ReadU8 ();
102
  m_length = i.ReadU8 ();
103
103
104
  uint32_t dataLength = GetLength () - 2;
104
  uint32_t dataLength = GetLength () - 2;
105
  uint8_t data[dataLength];
105
  uint8_t* data = new uint8_t[dataLength];
106
  i.Read (data, dataLength);
106
  i.Read (data, dataLength);
107
107
108
  if (dataLength > m_data.GetSize ())
108
  if (dataLength > m_data.GetSize ())
 Lines 117-122    Link Here 
117
  i = m_data.Begin ();
117
  i = m_data.Begin ();
118
  i.Write (data, dataLength);
118
  i.Write (data, dataLength);
119
119
120
  delete[] data;
120
  return GetSerializedSize ();
121
  return GetSerializedSize ();
121
}
122
}
122
123
 Lines 152-162    Link Here 
152
153
153
uint32_t OptionField::Deserialize (Buffer::Iterator start, uint32_t length)
154
uint32_t OptionField::Deserialize (Buffer::Iterator start, uint32_t length)
154
{
155
{
155
  uint8_t buf[length];
156
  uint8_t* buf = new uint8_t[length];
156
  start.Read (buf, length);
157
  start.Read (buf, length);
157
  m_optionData = Buffer ();
158
  m_optionData = Buffer ();
158
  m_optionData.AddAtEnd (length);
159
  m_optionData.AddAtEnd (length);
159
  m_optionData.Begin ().Write (buf, length);
160
  m_optionData.Begin ().Write (buf, length);
161
  delete[] buf;
160
  return length;
162
  return length;
161
}
163
}
162
164

Return to bug 1050