Commit c577810d authored by Max Limper's avatar Max Limper

range check for vertex colors and normals in OBJ loader

parent 8b7be54e
Pipeline #2974 passed with stage
in 30 minutes and 42 seconds
...@@ -597,8 +597,14 @@ read(std::istream& _in, BaseImporter& _bi, Options& _opt) ...@@ -597,8 +597,14 @@ read(std::istream& _in, BaseImporter& _bi, Options& _opt)
// Obj counts from 1 and not zero .. array counts from zero therefore -1 // Obj counts from 1 and not zero .. array counts from zero therefore -1
vhandles.push_back(VertexHandle(value-1)); vhandles.push_back(VertexHandle(value-1));
faceVertices.push_back(VertexHandle(value-1)); faceVertices.push_back(VertexHandle(value-1));
if (fileOptions.vertex_has_color() ) if (fileOptions.vertex_has_color()) {
_bi.set_color(vhandles.back(), colors[value-1]); if ((unsigned int)(value - 1) < colors.size()) {
_bi.set_color(vhandles.back(), colors[value - 1]);
}
else {
omerr() << "Error setting vertex color" << std::endl;
}
}
break; break;
case 1: // texture coord case 1: // texture coord
...@@ -648,9 +654,13 @@ read(std::istream& _in, BaseImporter& _bi, Options& _opt) ...@@ -648,9 +654,13 @@ read(std::istream& _in, BaseImporter& _bi, Options& _opt)
// Obj counts from 1 and not zero .. array counts from zero therefore -1 // Obj counts from 1 and not zero .. array counts from zero therefore -1
if (fileOptions.vertex_has_normal() ) { if (fileOptions.vertex_has_normal() ) {
assert(!vhandles.empty()); assert(!vhandles.empty());
assert((unsigned int)(value-1) < normals.size()); if ((unsigned int)(value - 1) < normals.size()) {
_bi.set_normal(vhandles.back(), normals[value-1]); _bi.set_normal(vhandles.back(), normals[value - 1]);
}
else {
omerr() << "Error setting vertex normal" << std::endl;
}
} }
break; break;
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment