Explorar el Código

altered debug output

Dave Schuyler hace 21 años
padre
commit
cdd7d20546
Se han modificado 1 ficheros con 101 adiciones y 53 borrados
  1. 101 53
      panda/src/express/datagramIterator.I

+ 101 - 53
panda/src/express/datagramIterator.I

@@ -24,9 +24,8 @@
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE DatagramIterator::
 INLINE DatagramIterator::
 DatagramIterator() :
 DatagramIterator() :
-  _datagram((Datagram *)NULL),
-  _current_index(0)
-{
+    _datagram((Datagram *)NULL),
+    _current_index(0) {
 }
 }
 
 
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
@@ -36,9 +35,8 @@ DatagramIterator() :
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE DatagramIterator::
 INLINE DatagramIterator::
 DatagramIterator(const Datagram &datagram, size_t offset) :
 DatagramIterator(const Datagram &datagram, size_t offset) :
-  _datagram(&datagram),
-  _current_index(offset)
-{
+    _datagram(&datagram),
+    _current_index(offset) {
   nassertv(_current_index <= _datagram->get_length());
   nassertv(_current_index <= _datagram->get_length());
 }
 }
 
 
@@ -49,9 +47,8 @@ DatagramIterator(const Datagram &datagram, size_t offset) :
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE DatagramIterator::
 INLINE DatagramIterator::
 DatagramIterator(const DatagramIterator &copy) :
 DatagramIterator(const DatagramIterator &copy) :
-  _datagram(copy._datagram),
-  _current_index(copy._current_index)
-{
+    _datagram(copy._datagram),
+  _current_index(copy._current_index) {
 }
 }
 
 
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
@@ -84,7 +81,7 @@ INLINE DatagramIterator::
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE bool DatagramIterator::
 INLINE bool DatagramIterator::
 get_bool() {
 get_bool() {
-  return (get_uint8() != 0);
+  return get_uint8() != 0;
 }
 }
 
 
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
@@ -94,12 +91,13 @@ get_bool() {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE PN_int8 DatagramIterator::
 INLINE PN_int8 DatagramIterator::
 get_int8() {
 get_int8() {
-  nassertr(_datagram != (const Datagram *)NULL &&
-           _current_index < _datagram->get_length(), 0);
-
+  nassertr(_datagram != (const Datagram *)NULL, 0);
+  // Avoid reading junk data off the end of the datagram:
+  nassertr(_current_index < _datagram->get_length(), 0);
+  // Get the Data:
   const char *ptr = (const char *)_datagram->get_data();
   const char *ptr = (const char *)_datagram->get_data();
   PN_int8 tempvar = (PN_int8)ptr[_current_index];
   PN_int8 tempvar = (PN_int8)ptr[_current_index];
-  _current_index++;
+  ++_current_index;
 
 
   return tempvar;
   return tempvar;
 }
 }
@@ -111,12 +109,13 @@ get_int8() {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE PN_uint8 DatagramIterator::
 INLINE PN_uint8 DatagramIterator::
 get_uint8() {
 get_uint8() {
-  nassertr(_datagram != (const Datagram *)NULL &&
-           _current_index < _datagram->get_length(), 0);
-
+  nassertr(_datagram != (const Datagram *)NULL, 0);
+  // Avoid reading junk data off the end of the datagram:
+  nassertr(_current_index < _datagram->get_length(), 0);
+  // Get the Data:
   const char *ptr = (const char *)_datagram->get_data();
   const char *ptr = (const char *)_datagram->get_data();
   PN_uint8 tempvar = (PN_uint8)ptr[_current_index];
   PN_uint8 tempvar = (PN_uint8)ptr[_current_index];
-  _current_index++;
+  ++_current_index;
 
 
   return tempvar;
   return tempvar;
 }
 }
@@ -128,10 +127,13 @@ get_uint8() {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE PN_int16 DatagramIterator::
 INLINE PN_int16 DatagramIterator::
 get_int16() {
 get_int16() {
-  nassertr(_datagram != (const Datagram *)NULL &&
-           _current_index < _datagram->get_length(), 0);
+  nassertr(_datagram != (const Datagram *)NULL, 0);
+  nassertr(_current_index < _datagram->get_length(), 0);
 
 
   PN_int16 tempvar;
   PN_int16 tempvar;
+  // Avoid reading junk data off the end of the datagram:
+  nassertr(_current_index + sizeof(tempvar) <= _datagram->get_length(), 0);
+  // Get the Data:
   LittleEndian s(_datagram->get_data(), _current_index, sizeof(tempvar));
   LittleEndian s(_datagram->get_data(), _current_index, sizeof(tempvar));
   s.store_value(&tempvar, sizeof(tempvar));
   s.store_value(&tempvar, sizeof(tempvar));
   _current_index += sizeof(tempvar);
   _current_index += sizeof(tempvar);
@@ -146,10 +148,13 @@ get_int16() {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE PN_int32 DatagramIterator::
 INLINE PN_int32 DatagramIterator::
 get_int32() {
 get_int32() {
-  nassertr(_datagram != (const Datagram *)NULL &&
-           _current_index < _datagram->get_length(), 0);
+  nassertr(_datagram != (const Datagram *)NULL, 0);
+  nassertr(_current_index < _datagram->get_length(), 0);
 
 
   PN_int32 tempvar;
   PN_int32 tempvar;
+  // Avoid reading junk data off the end of the datagram:
+  nassertr(_current_index + sizeof(tempvar) <= _datagram->get_length(), 0);
+  // Get the Data:
   LittleEndian s(_datagram->get_data(), _current_index, sizeof(tempvar));
   LittleEndian s(_datagram->get_data(), _current_index, sizeof(tempvar));
   s.store_value(&tempvar, sizeof(tempvar));
   s.store_value(&tempvar, sizeof(tempvar));
   _current_index += sizeof(tempvar);
   _current_index += sizeof(tempvar);
@@ -164,10 +169,13 @@ get_int32() {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE PN_int64 DatagramIterator::
 INLINE PN_int64 DatagramIterator::
 get_int64() {
 get_int64() {
-  nassertr(_datagram != (const Datagram *)NULL &&
-           _current_index < _datagram->get_length(), 0);
+  nassertr(_datagram != (const Datagram *)NULL, 0);
+  nassertr(_current_index < _datagram->get_length(), 0);
 
 
   PN_int64 tempvar;
   PN_int64 tempvar;
+  // Avoid reading junk data off the end of the datagram:
+  nassertr(_current_index + sizeof(tempvar) <= _datagram->get_length(), 0);
+  // Get the Data:
   LittleEndian s(_datagram->get_data(), _current_index, sizeof(tempvar));
   LittleEndian s(_datagram->get_data(), _current_index, sizeof(tempvar));
   s.store_value(&tempvar, sizeof(tempvar));
   s.store_value(&tempvar, sizeof(tempvar));
   _current_index += sizeof(tempvar);
   _current_index += sizeof(tempvar);
@@ -182,10 +190,13 @@ get_int64() {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE PN_uint16 DatagramIterator::
 INLINE PN_uint16 DatagramIterator::
 get_uint16() {
 get_uint16() {
-  nassertr(_datagram != (const Datagram *)NULL &&
-           _current_index < _datagram->get_length(), 0);
+  nassertr(_datagram != (const Datagram *)NULL, 0);
+  nassertr(_current_index < _datagram->get_length(), 0);
 
 
-  PN_uint16 tempvar;
+  PN_uint16 tempvar;  
+  // Avoid reading junk data off the end of the datagram:
+  nassertr(_current_index + sizeof(tempvar) <= _datagram->get_length(), 0);
+  // Get the Data:
   LittleEndian s(_datagram->get_data(), _current_index, sizeof(tempvar));
   LittleEndian s(_datagram->get_data(), _current_index, sizeof(tempvar));
   s.store_value(&tempvar, sizeof(tempvar));
   s.store_value(&tempvar, sizeof(tempvar));
   _current_index += sizeof(tempvar);
   _current_index += sizeof(tempvar);
@@ -200,10 +211,13 @@ get_uint16() {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE PN_uint32 DatagramIterator::
 INLINE PN_uint32 DatagramIterator::
 get_uint32() {
 get_uint32() {
-  nassertr(_datagram != (const Datagram *)NULL &&
-           _current_index < _datagram->get_length(), 0);
+  nassertr(_datagram != (const Datagram *)NULL, 0);
+  nassertr(_current_index < _datagram->get_length(), 0);
 
 
   PN_uint32 tempvar;
   PN_uint32 tempvar;
+  // Avoid reading junk data off the end of the datagram:
+  nassertr(_current_index + sizeof(tempvar) <= _datagram->get_length(), 0);
+  // Get the Data:
   LittleEndian s(_datagram->get_data(), _current_index, sizeof(tempvar));
   LittleEndian s(_datagram->get_data(), _current_index, sizeof(tempvar));
   s.store_value(&tempvar, sizeof(tempvar));
   s.store_value(&tempvar, sizeof(tempvar));
   _current_index += sizeof(tempvar);
   _current_index += sizeof(tempvar);
@@ -218,10 +232,13 @@ get_uint32() {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE PN_uint64 DatagramIterator::
 INLINE PN_uint64 DatagramIterator::
 get_uint64() {
 get_uint64() {
-  nassertr(_datagram != (const Datagram *)NULL &&
-           _current_index < _datagram->get_length(), 0);
+  nassertr(_datagram != (const Datagram *)NULL, 0);
+  nassertr(_current_index < _datagram->get_length(), 0);
 
 
   PN_uint64 tempvar;
   PN_uint64 tempvar;
+  // Avoid reading junk data off the end of the datagram:
+  nassertr(_current_index + sizeof(tempvar) <= _datagram->get_length(), 0);
+  // Get the Data:
   LittleEndian s(_datagram->get_data(), _current_index, sizeof(tempvar));
   LittleEndian s(_datagram->get_data(), _current_index, sizeof(tempvar));
   s.store_value(&tempvar, sizeof(tempvar));
   s.store_value(&tempvar, sizeof(tempvar));
   _current_index += sizeof(tempvar);
   _current_index += sizeof(tempvar);
@@ -243,10 +260,13 @@ get_float32() {
   // architectures we are concerned with.  If we come across one that
   // architectures we are concerned with.  If we come across one that
   // is different, we will have to convert.
   // is different, we will have to convert.
   nassertr(sizeof(float) == 4, 0.0f);
   nassertr(sizeof(float) == 4, 0.0f);
-  nassertr(_datagram != (const Datagram *)NULL &&
-           _current_index < _datagram->get_length(), 0.0f);
+  nassertr(_datagram != (const Datagram *)NULL, 0.0);
+  nassertr(_current_index < _datagram->get_length(), 0.0);
 
 
   float tempvar;
   float tempvar;
+  // Avoid reading junk data off the end of the datagram:
+  nassertr(_current_index + sizeof(tempvar) <= _datagram->get_length(), 0.0);
+  // Get the Data:
   LittleEndian s(_datagram->get_data(), _current_index, sizeof(tempvar));
   LittleEndian s(_datagram->get_data(), _current_index, sizeof(tempvar));
   s.store_value(&tempvar, sizeof(tempvar));
   s.store_value(&tempvar, sizeof(tempvar));
   _current_index += sizeof(tempvar);
   _current_index += sizeof(tempvar);
@@ -261,10 +281,13 @@ get_float32() {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE PN_float64 DatagramIterator::
 INLINE PN_float64 DatagramIterator::
 get_float64() {
 get_float64() {
-  nassertr(_datagram != (const Datagram *)NULL &&
-           _current_index < _datagram->get_length(), 0.0);
+  nassertr(_datagram != (const Datagram *)NULL, 0.0);
+  nassertr(_current_index < _datagram->get_length(), 0.0);
 
 
   PN_float64 tempvar;
   PN_float64 tempvar;
+  // Avoid reading junk data off the end of the datagram:
+  nassertr(_current_index + sizeof(tempvar) <= _datagram->get_length(), 0.0);
+  // Get the Data:
   LittleEndian s(_datagram->get_data(), _current_index, sizeof(tempvar));
   LittleEndian s(_datagram->get_data(), _current_index, sizeof(tempvar));
   s.store_value(&tempvar, sizeof(tempvar));
   s.store_value(&tempvar, sizeof(tempvar));
   _current_index += sizeof(tempvar);
   _current_index += sizeof(tempvar);
@@ -279,10 +302,13 @@ get_float64() {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE PN_int16 DatagramIterator::
 INLINE PN_int16 DatagramIterator::
 get_be_int16() {
 get_be_int16() {
-  nassertr(_datagram != (const Datagram *)NULL &&
-           _current_index < _datagram->get_length(), 0);
+  nassertr(_datagram != (const Datagram *)NULL, 0);
+  nassertr(_current_index < _datagram->get_length(), 0);
 
 
   PN_int16 tempvar;
   PN_int16 tempvar;
+  // Avoid reading junk data off the end of the datagram:
+  nassertr(_current_index + sizeof(tempvar) <= _datagram->get_length(), 0);
+  // Get the Data:
   BigEndian s(_datagram->get_data(), _current_index, sizeof(tempvar));
   BigEndian s(_datagram->get_data(), _current_index, sizeof(tempvar));
   s.store_value(&tempvar, sizeof(tempvar));
   s.store_value(&tempvar, sizeof(tempvar));
   _current_index += sizeof(tempvar);
   _current_index += sizeof(tempvar);
@@ -297,10 +323,13 @@ get_be_int16() {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE PN_int32 DatagramIterator::
 INLINE PN_int32 DatagramIterator::
 get_be_int32() {
 get_be_int32() {
-  nassertr(_datagram != (const Datagram *)NULL &&
-           _current_index < _datagram->get_length(), 0);
+  nassertr(_datagram != (const Datagram *)NULL, 0);
+  nassertr(_current_index < _datagram->get_length(), 0);
 
 
   PN_int32 tempvar;
   PN_int32 tempvar;
+  // Avoid reading junk data off the end of the datagram:
+  nassertr(_current_index + sizeof(tempvar) <= _datagram->get_length(), 0);
+  // Get the Data:
   BigEndian s(_datagram->get_data(), _current_index, sizeof(tempvar));
   BigEndian s(_datagram->get_data(), _current_index, sizeof(tempvar));
   s.store_value(&tempvar, sizeof(tempvar));
   s.store_value(&tempvar, sizeof(tempvar));
   _current_index += sizeof(tempvar);
   _current_index += sizeof(tempvar);
@@ -315,10 +344,13 @@ get_be_int32() {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE PN_int64 DatagramIterator::
 INLINE PN_int64 DatagramIterator::
 get_be_int64() {
 get_be_int64() {
-  nassertr(_datagram != (const Datagram *)NULL &&
-           _current_index < _datagram->get_length(), 0);
+  nassertr(_datagram != (const Datagram *)NULL, 0);
+  nassertr(_current_index < _datagram->get_length(), 0);
 
 
   PN_int64 tempvar;
   PN_int64 tempvar;
+  // Avoid reading junk data off the end of the datagram:
+  nassertr(_current_index + sizeof(tempvar) <= _datagram->get_length(), 0);
+  // Get the Data:
   BigEndian s(_datagram->get_data(), _current_index, sizeof(tempvar));
   BigEndian s(_datagram->get_data(), _current_index, sizeof(tempvar));
   s.store_value(&tempvar, sizeof(tempvar));
   s.store_value(&tempvar, sizeof(tempvar));
   _current_index += sizeof(tempvar);
   _current_index += sizeof(tempvar);
@@ -333,10 +365,13 @@ get_be_int64() {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE PN_uint16 DatagramIterator::
 INLINE PN_uint16 DatagramIterator::
 get_be_uint16() {
 get_be_uint16() {
-  nassertr(_datagram != (const Datagram *)NULL &&
-           _current_index < _datagram->get_length(), 0);
+  nassertr(_datagram != (const Datagram *)NULL, 0);
+  nassertr(_current_index < _datagram->get_length(), 0);
 
 
   PN_uint16 tempvar;
   PN_uint16 tempvar;
+  // Avoid reading junk data off the end of the datagram:
+  nassertr(_current_index + sizeof(tempvar) <= _datagram->get_length(), 0);
+  // Get the Data:
   BigEndian s(_datagram->get_data(), _current_index, sizeof(tempvar));
   BigEndian s(_datagram->get_data(), _current_index, sizeof(tempvar));
   s.store_value(&tempvar, sizeof(tempvar));
   s.store_value(&tempvar, sizeof(tempvar));
   _current_index += sizeof(tempvar);
   _current_index += sizeof(tempvar);
@@ -351,10 +386,13 @@ get_be_uint16() {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE PN_uint32 DatagramIterator::
 INLINE PN_uint32 DatagramIterator::
 get_be_uint32() {
 get_be_uint32() {
-  nassertr(_datagram != (const Datagram *)NULL &&
-           _current_index < _datagram->get_length(), 0);
+  nassertr(_datagram != (const Datagram *)NULL, 0.0);
+  nassertr(_current_index < _datagram->get_length(), 0.0);
 
 
   PN_uint32 tempvar;
   PN_uint32 tempvar;
+  // Avoid reading junk data off the end of the datagram:
+  nassertr(_current_index + sizeof(tempvar) <= _datagram->get_length(), 0);
+  // Get the Data:
   BigEndian s(_datagram->get_data(), _current_index, sizeof(tempvar));
   BigEndian s(_datagram->get_data(), _current_index, sizeof(tempvar));
   s.store_value(&tempvar, sizeof(tempvar));
   s.store_value(&tempvar, sizeof(tempvar));
   _current_index += sizeof(tempvar);
   _current_index += sizeof(tempvar);
@@ -369,10 +407,13 @@ get_be_uint32() {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE PN_uint64 DatagramIterator::
 INLINE PN_uint64 DatagramIterator::
 get_be_uint64() {
 get_be_uint64() {
-  nassertr(_datagram != (const Datagram *)NULL &&
-           _current_index < _datagram->get_length(), 0);
+  nassertr(_datagram != (const Datagram *)NULL, 0.0);
+  nassertr(_current_index < _datagram->get_length(), 0.0);
 
 
   PN_uint64 tempvar;
   PN_uint64 tempvar;
+  // Avoid reading junk data off the end of the datagram:
+  nassertr(_current_index + sizeof(tempvar) <= _datagram->get_length(), 0);
+  // Get the Data:
   BigEndian s(_datagram->get_data(), _current_index, sizeof(tempvar));
   BigEndian s(_datagram->get_data(), _current_index, sizeof(tempvar));
   s.store_value(&tempvar, sizeof(tempvar));
   s.store_value(&tempvar, sizeof(tempvar));
   _current_index += sizeof(tempvar);
   _current_index += sizeof(tempvar);
@@ -394,10 +435,13 @@ get_be_float32() {
   // architectures we are concerned with.  If we come across one that
   // architectures we are concerned with.  If we come across one that
   // is different, we will have to convert.
   // is different, we will have to convert.
   nassertr(sizeof(float) == 4, 0.0f);
   nassertr(sizeof(float) == 4, 0.0f);
-  nassertr(_datagram != (const Datagram *)NULL &&
-           _current_index < _datagram->get_length(), 0.0f);
+  nassertr(_datagram != (const Datagram *)NULL, 0.0);
+  nassertr(_current_index < _datagram->get_length(), 0.0);
 
 
   float tempvar;
   float tempvar;
+  // Avoid reading junk data off the end of the datagram:
+  nassertr(_current_index + sizeof(tempvar) <= _datagram->get_length(), 0);
+  // Get the Data:
   BigEndian s(_datagram->get_data(), _current_index, sizeof(tempvar));
   BigEndian s(_datagram->get_data(), _current_index, sizeof(tempvar));
   s.store_value(&tempvar, sizeof(tempvar));
   s.store_value(&tempvar, sizeof(tempvar));
   _current_index += sizeof(tempvar);
   _current_index += sizeof(tempvar);
@@ -412,10 +456,13 @@ get_be_float32() {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE PN_float64 DatagramIterator::
 INLINE PN_float64 DatagramIterator::
 get_be_float64() {
 get_be_float64() {
-  nassertr(_datagram != (const Datagram *)NULL &&
-           _current_index < _datagram->get_length(), 0.0);
+  nassertr(_datagram != (const Datagram *)NULL, 0.0);
+  nassertr(_current_index < _datagram->get_length(), 0.0);
 
 
   PN_float64 tempvar;
   PN_float64 tempvar;
+  // Avoid reading junk data off the end of the datagram:
+  nassertr(_current_index + sizeof(tempvar) <= _datagram->get_length(), 0.0);
+  // Get the Data:
   BigEndian s(_datagram->get_data(), _current_index, sizeof(tempvar));
   BigEndian s(_datagram->get_data(), _current_index, sizeof(tempvar));
   s.store_value(&tempvar, sizeof(tempvar));
   s.store_value(&tempvar, sizeof(tempvar));
   _current_index += sizeof(tempvar);
   _current_index += sizeof(tempvar);
@@ -431,6 +478,7 @@ get_be_float64() {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE void DatagramIterator::
 INLINE void DatagramIterator::
 skip_bytes(size_t size) {
 skip_bytes(size_t size) {
+  nassertv(_datagram != (const Datagram *)NULL);
   nassertv((int)size >= 0);
   nassertv((int)size >= 0);
   nassertv(_current_index + size <= _datagram->get_length());
   nassertv(_current_index + size <= _datagram->get_length());
   _current_index += size;
   _current_index += size;
@@ -444,8 +492,8 @@ skip_bytes(size_t size) {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 INLINE string DatagramIterator::
 INLINE string DatagramIterator::
 get_remaining_bytes() const {
 get_remaining_bytes() const {
-  nassertr(_datagram != (const Datagram *)NULL &&
-           _current_index <= _datagram->get_length(), "");
+  nassertr(_datagram != (const Datagram *)NULL, "");
+  nassertr(_current_index <= _datagram->get_length(), "");
 
 
   const char *ptr = (const char *)_datagram->get_data();
   const char *ptr = (const char *)_datagram->get_data();
   int remaining_size = _datagram->get_length() - _current_index;
   int remaining_size = _datagram->get_length() - _current_index;