Fix: handling packets with options length equal to zero.
authorGuilherme Maciel Ferreira <guilherme.maciel.ferreira@gmail.com>
Sat, 24 Dec 2011 14:06:41 +0000 (12:06 -0200)
committerGuilherme Maciel Ferreira <guilherme.maciel.ferreira@gmail.com>
Sat, 24 Dec 2011 14:06:41 +0000 (12:06 -0200)
src/ip/ipv4header.cpp

index 7c13490..1c0dc22 100644 (file)
@@ -232,7 +232,7 @@ istream &operator>>(
         GlobalLogger.error() << "Error: invalid IP options length value." << endl;
         is.setstate( ios::failbit );
     }
-    else
+    else if ( ( 0 < options_length ) && ( options_length <= 40 ) )
     {
         size_t options_size = static_cast<size_t>( options_length );
         scoped_array<uint8_t> options_data( new uint8_t[options_size] );
@@ -242,6 +242,10 @@ istream &operator>>(
 
         header.Payload.append( options_data.get(), options_size );
     }
+    else // ( options_length == 0 )
+    {
+        //GlobalLogger.info() << "Info: No options available in this packet." << endl;
+    }
 
     return is;
 }