From 8b02c313267b96fcbe5e3544fde6a146eb23afe3 Mon Sep 17 00:00:00 2001 From: Holger Vogt Date: Wed, 29 Aug 2018 21:44:27 +0200 Subject: [PATCH] prevent reading beyond array boundaries --- src/xspice/icm/table/table3D/cfunc.mod | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/xspice/icm/table/table3D/cfunc.mod b/src/xspice/icm/table/table3D/cfunc.mod index 0ba381194..2fa50652d 100644 --- a/src/xspice/icm/table/table3D/cfunc.mod +++ b/src/xspice/icm/table/table3D/cfunc.mod @@ -750,7 +750,15 @@ cm_table3D(ARGS) /* structure holding parms, inputs, outputs, etc. */ DER /* what to compute [FUNC, DER, BOTH] */ ); +/* xind yind zind may become too large */ + if (xind == loc->ix - 1) + xind--; + if (yind == loc->iy - 1) + yind--; + if (zind == loc->iz - 1) + zind--; + /* overwrite outval from sf_eno3_apply by trilinear interpolation */ outval = TrilinearInterpolation(xoff / (loc->xcol[xind + 1] - loc->xcol[xind]), yoff / (loc->ycol[yind + 1] - loc->ycol[yind]), zoff / (loc->zcol[zind + 1] - loc->zcol[zind]),