summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDane Springmeyer <dane@mapbox.com>2016-05-04 10:12:15 -0700
committerDane Springmeyer <dane@mapbox.com>2016-05-04 10:12:15 -0700
commit0c6bce2819c688bb8d7fb3cff02c10d4e218d0fe (patch)
treea88e1e2e2358d7affe3edf93e28d3ff92bbe8623
parent433ca3026b1550daafa655817f065e8506f0699a (diff)
downloadqtlocation-mapboxgl-0c6bce2819c688bb8d7fb3cff02c10d4e218d0fe.tar.gz
[core] consistently protect against invalid tag encoding in vector tile
-rw-r--r--src/mbgl/tile/vector_tile.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/mbgl/tile/vector_tile.cpp b/src/mbgl/tile/vector_tile.cpp
index aedb703898..25314c114c 100644
--- a/src/mbgl/tile/vector_tile.cpp
+++ b/src/mbgl/tile/vector_tile.cpp
@@ -96,6 +96,9 @@ std::unordered_map<std::string,Value> VectorTileFeature::getProperties() const {
const auto & end_itr = tags_iter.second;
while (start_itr != end_itr) {
uint32_t tag_key = static_cast<uint32_t>(*start_itr++);
+ if (start_itr == end_itr) {
+ throw std::runtime_error("uneven number of feature tag ids");
+ }
uint32_t tag_val = static_cast<uint32_t>(*start_itr++);
properties[layer.keys.at(tag_key)] = layer.values.at(tag_val);
}