Fixed possible out of bound array access.
The check of index value moved to before the write to the array.
Differential Revision: https://reviews.llvm.org/D60471
git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@358181 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/runtime/src/kmp_settings.cpp b/runtime/src/kmp_settings.cpp
index 0e11fbf..70817d9 100644
--- a/runtime/src/kmp_settings.cpp
+++ b/runtime/src/kmp_settings.cpp
@@ -4462,10 +4462,10 @@
pos = input;
components[level++] = pos;
while ((pos = strchr(pos, ','))) {
+ if (level >= MAX_T_LEVEL)
+ goto err; // too many components provided
*pos = '\0'; // modify input and avoid more copying
components[level++] = ++pos; // expect something after ","
- if (level > MAX_T_LEVEL)
- goto err; // too many components provided
}
// Check each component
for (int i = 0; i < level; ++i) {