Index: openmp/runtime/src/kmp_affinity.cpp =================================================================== --- openmp/runtime/src/kmp_affinity.cpp +++ openmp/runtime/src/kmp_affinity.cpp @@ -2164,6 +2164,10 @@ // FIXME - this will match "node_ " unsigned level; if (KMP_SSCANF(buf, "node_%u id", &level) == 1) { + // validate the input fisrt: + if (level > (unsigned)__kmp_xproc) { // level is too big + level = __kmp_xproc; + } if (nodeIdIndex + level >= maxIndex) { maxIndex = nodeIdIndex + level; } @@ -4336,8 +4340,6 @@ depth = __kmp_affinity_create_hwloc_map(&address2os, &msg_id); if (depth == 0) { KMP_EXIT_AFF_NONE; - } else if (depth < 0 && __kmp_affinity_verbose) { - KMP_INFORM(AffIgnoringHwloc, "KMP_AFFINITY"); } } else if (__kmp_affinity_verbose) { KMP_INFORM(AffIgnoringHwloc, "KMP_AFFINITY"); Index: openmp/runtime/src/kmp_runtime.cpp =================================================================== --- openmp/runtime/src/kmp_runtime.cpp +++ openmp/runtime/src/kmp_runtime.cpp @@ -6525,7 +6525,7 @@ file_name = tail; if (tail != NULL) { long *flag_addr = 0; - long flag_val = 0; + unsigned long flag_val = 0; KMP_SSCANF(flag_addr_str, "%p", RCAST(void**, &flag_addr)); KMP_SSCANF(flag_val_str, "%lx", &flag_val); if (flag_addr != 0 && flag_val != 0 && strcmp(file_name, "") != 0) { Index: openmp/runtime/src/kmp_taskdeps.h =================================================================== --- openmp/runtime/src/kmp_taskdeps.h +++ openmp/runtime/src/kmp_taskdeps.h @@ -25,6 +25,7 @@ return; kmp_int32 n = KMP_ATOMIC_DEC(&node->dn.nrefs) - 1; + KMP_DEBUG_ASSERT(n >= 0); if (n == 0) { KMP_ASSERT(node->dn.nrefs == 0); #if USE_FAST_MEMORY