diff --git a/tiny_obj_loader.h b/tiny_obj_loader.h index f1e14eb..4f87a9b 100644 --- a/tiny_obj_loader.h +++ b/tiny_obj_loader.h @@ -1992,6 +1992,7 @@ bool LoadObj(attrib_t *attrib, std::vector *shapes, } if (token[0] == 't' && IS_SPACE(token[1])) { + const int max_tag_nums = 8192; // FIXME(syoyo): Parameterize. tag_t tag; token += 2; @@ -2003,14 +2004,23 @@ bool LoadObj(attrib_t *attrib, std::vector *shapes, if (ts.num_ints < 0) { ts.num_ints = 0; } + if (ts.num_ints > max_tag_nums) { + ts.num_ints = max_tag_nums; + } if (ts.num_reals < 0) { ts.num_reals = 0; } + if (ts.num_reals > max_tag_nums) { + ts.num_reals = max_tag_nums; + } if (ts.num_strings < 0) { ts.num_strings = 0; } + if (ts.num_strings > max_tag_nums) { + ts.num_strings = max_tag_nums; + } tag.intValues.resize(static_cast(ts.num_ints));