[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