From b74a5b6933c4e27add3bc547132cc14b3f8df173 Mon Sep 17 00:00:00 2001 From: Mrkva Date: Tue, 29 Dec 2015 10:55:08 +0100 Subject: [PATCH] Fix loop condition in Compress4 functions - prevent accessing outside array bounds --- src/nvtt/squish/fastclusterfit.cpp | 6 +++--- src/nvtt/squish/weightedclusterfit.cpp | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/nvtt/squish/fastclusterfit.cpp b/src/nvtt/squish/fastclusterfit.cpp index 0b19150..372f90a 100644 --- a/src/nvtt/squish/fastclusterfit.cpp +++ b/src/nvtt/squish/fastclusterfit.cpp @@ -256,15 +256,15 @@ void FastClusterFit::Compress4( void* block ) int i = 0; // check all possible clusters for this total order - for( int c0 = 0; c0 <= 16; c0++) + for( int c0 = 0; c0 < 16; c0++) { Vec4 x1 = zero; - for( int c1 = 0; c1 <= 16-c0; c1++) + for( int c1 = 0; c1 < 16-c0; c1++) { Vec4 x2 = zero; - for( int c2 = 0; c2 <= 16-c0-c1; c2++) + for( int c2 = 0; c2 < 16-c0-c1; c2++) { Vec4 const constants = Vec4((const float *)&s_fourElement[i]); Vec4 const alpha2_sum = constants.SplatX(); diff --git a/src/nvtt/squish/weightedclusterfit.cpp b/src/nvtt/squish/weightedclusterfit.cpp index 9181249..5a2068d 100644 --- a/src/nvtt/squish/weightedclusterfit.cpp +++ b/src/nvtt/squish/weightedclusterfit.cpp @@ -264,15 +264,15 @@ void WeightedClusterFit::Compress4( void* block ) int b0 = 0, b1 = 0, b2 = 0; // check all possible clusters for this total order - for( int c0 = 0; c0 <= count; c0++) + for( int c0 = 0; c0 < count; c0++) { Vec4 x1 = zero; - for( int c1 = 0; c1 <= count-c0; c1++) + for( int c1 = 0; c1 < count-c0; c1++) { Vec4 x2 = zero; - for( int c2 = 0; c2 <= count-c0-c1; c2++) + for( int c2 = 0; c2 < count-c0-c1; c2++) { Vec4 const x3 = m_xsum - x2 - x1 - x0;