Explorar o código

HPCC-22989 Protect against div by 0 in skew calc.

Signed-off-by: Jake Smith <jake.smith@lexisnexisrisk.com>
Jake Smith %!s(int64=5) %!d(string=hai) anos
pai
achega
bc3f662fa0
Modificáronse 1 ficheiros con 7 adicións e 3 borrados
  1. 7 3
      dali/base/dadfs.cpp

+ 7 - 3
dali/base/dadfs.cpp

@@ -3398,9 +3398,13 @@ protected:
             totalPartSz += size;
             totalPartSz += size;
         }
         }
         offset_t avgPartSz = totalPartSz / np;
         offset_t avgPartSz = totalPartSz / np;
-
-        maxSkew = (unsigned)(10000.0 * (((double)maxPartSz-avgPartSz)/avgPartSz));
-        minSkew = (unsigned)(10000.0 * ((avgPartSz-(double)minPartSz)/avgPartSz));
+        if (0 == avgPartSz)
+            minSkew = maxSkew = 0;
+        else
+        {
+            maxSkew = (unsigned)(10000.0 * (((double)maxPartSz-avgPartSz)/avgPartSz));
+            minSkew = (unsigned)(10000.0 * ((avgPartSz-(double)minPartSz)/avgPartSz));
+        }
 
 
         return true;
         return true;
     }
     }