[test-suite] r332099 - [test-suite][ubsan] Fix UB in PENNANT in Mesh::initInvMap

Brian Homerding via llvm-commits llvm-commits at lists.llvm.org
Fri May 11 08:44:08 PDT 2018


Author: homerdin
Date: Fri May 11 08:44:08 2018
New Revision: 332099

URL: http://llvm.org/viewvc/llvm-project?rev=332099&view=rev
Log:
[test-suite][ubsan] Fix UB in PENNANT in Mesh::initInvMap

PENNANT is accessing pcpair[-1] when i==0, however the value is not used when
i==0 due to short-circuit evaluationi so the application behavior is not
influenced.  Adding a check to only load pcpair[i-1] when it will be used.

Modified:
    test-suite/trunk/MultiSource/Benchmarks/DOE-ProxyApps-C++/PENNANT/Mesh.cc

Modified: test-suite/trunk/MultiSource/Benchmarks/DOE-ProxyApps-C++/PENNANT/Mesh.cc
URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/MultiSource/Benchmarks/DOE-ProxyApps-C%2B%2B/PENNANT/Mesh.cc?rev=332099&r1=332098&r2=332099&view=diff
==============================================================================
--- test-suite/trunk/MultiSource/Benchmarks/DOE-ProxyApps-C++/PENNANT/Mesh.cc (original)
+++ test-suite/trunk/MultiSource/Benchmarks/DOE-ProxyApps-C++/PENNANT/Mesh.cc Fri May 11 08:44:08 2018
@@ -273,8 +273,11 @@ void Mesh::initInvMap() {
     sort(pcpair.begin(), pcpair.end());
     for (int i = 0; i < numc; ++i) {
         int p = pcpair[i].first;
-        int pp = pcpair[i+1].first;
-        int pm = pcpair[i-1].first;
+        int pp = pcpair[i+1].first;         
+        int pm = 0;
+        // pm is only used when i != 0
+        if(i != 0)
+            pm = pcpair[i-1].first;
         int c = pcpair[i].second;
         int cp = pcpair[i+1].second;
 




More information about the llvm-commits mailing list