[Liblas-commits] hg: Assert colour component position versus size of data stream....

liblas-commits at liblas.org liblas-commits at liblas.org
Tue Oct 12 06:59:02 EDT 2010


changeset 3fecf7d04752 in /Volumes/Data/www/liblas.org/hg
details: http://hg.liblas.orghg?cmd=changeset;node=3fecf7d04752
summary: Assert colour component position versus size of data stream. There seems to be a bug because running las2las2 TO_core_last_zoom.las catches this assertion. Size of Point::m_data is 28 bytes but calculated positions are subsequently 28, 30 and 32.

diffstat:

 src/laspoint.cpp |  22 +++++++++++-----------
 1 files changed, 11 insertions(+), 11 deletions(-)

diffs (35 lines):

diff -r 55737d02b3bb -r 3fecf7d04752 src/laspoint.cpp
--- a/src/laspoint.cpp	Tue Oct 12 11:48:34 2010 +0100
+++ b/src/laspoint.cpp	Tue Oct 12 12:00:05 2010 +0100
@@ -816,20 +816,20 @@
         //         throw std::runtime_error(msg.str());
         return Color(0, 0, 0);
     }
+
+    using liblas::detail::bitsToInt;
+    
     std::vector<boost::uint8_t>::size_type red_pos = GetDimensionBytePosition(index_pos);
+    assert(red_pos + sizeof(red) <= m_data.size());
+    red = bitsToInt<boost::uint16_t>(red, m_data, red_pos);
+
     std::vector<boost::uint8_t>::size_type green_pos = GetDimensionBytePosition(index_pos + 1);
+    assert(green_pos + sizeof(green) <= m_data.size());
+    green = bitsToInt<boost::uint16_t>(green, m_data, green_pos);
+
     std::vector<boost::uint8_t>::size_type blue_pos = GetDimensionBytePosition(index_pos + 2);
-    
-
-    red = liblas::detail::bitsToInt<boost::uint16_t>(red, 
-                                                     m_data, 
-                                                     red_pos);
-    green = liblas::detail::bitsToInt<boost::uint16_t>(green, 
-                                                     m_data, 
-                                                     green_pos);
-    blue = liblas::detail::bitsToInt<boost::uint16_t>(blue, 
-                                                     m_data, 
-                                                     blue_pos);
+    assert(blue_pos + sizeof(blue) <= m_data.size());
+    blue = bitsToInt<boost::uint16_t>(blue, m_data, blue_pos);
 
   return Color(red, green, blue);
 }


More information about the Liblas-commits mailing list