From 87462165b5243a96ddf4e4d1725e16e4aac3af5c Mon Sep 17 00:00:00 2001 From: Turo Lamminen Date: Wed, 13 Dec 2017 11:28:22 +0200 Subject: [PATCH] Fix bad pointer arithmetic in aiVector2 Trying to reference 'y' via pointer arithmetic on 'x' is UB --- include/assimp/vector2.inl | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/include/assimp/vector2.inl b/include/assimp/vector2.inl index 5ce13eece..fe3059ad5 100644 --- a/include/assimp/vector2.inl +++ b/include/assimp/vector2.inl @@ -114,13 +114,29 @@ const aiVector2t& aiVector2t::operator /= (TReal f) { // ------------------------------------------------------------------------------------------------ template TReal aiVector2t::operator[](unsigned int i) const { - return *(&x + i); + switch (i) { + case 0: + return x; + case 1: + return y; + default: + break; + } + return x; } // ------------------------------------------------------------------------------------------------ template TReal& aiVector2t::operator[](unsigned int i) { - return *(&x + i); + switch (i) { + case 0: + return x; + case 1: + return y; + default: + break; + } + return x; } // ------------------------------------------------------------------------------------------------