Hao Zhong created LUCENENET-652:
-----------------------------------
Summary: SpatialArgs.calcDistanceFromErrPct is not checked agaist
null ctx
Key: LUCENENET-652
URL: https://issues.apache.org/jira/browse/LUCENENET-652
Project: Lucene.Net
Issue Type: Bug
Reporter: Hao Zhong
The code is as follows:
{color:#7f0055}public{color}{color:#000000}
{color}{color:#7f0055}static{color}{color:#000000}
{color}{color:#7f0055}double{color}{color:#000000}
calcDistanceFromErrPct({color}{color:#000000}Shape{color}{color:#000000}
{color}{color:#6a3e3e}shape{color}{color:#000000},
{color}{color:#7f0055}double{color}{color:#000000}
{color}{color:#6a3e3e}distErrPct{color}{color:#000000},
{color}{color:#000000}SpatialContext{color}{color:#000000}
{color}{color:#6a3e3e}ctx{color}{color:#000000}) {{color}
{color:#7f0055}if{color}{color:#000000}
({color}{color:#6a3e3e}distErrPct{color}{color:#000000} < 0 ||
{color}{color:#6a3e3e}distErrPct{color}{color:#000000} > 0.5) {{color}
{color:#7f0055}throw{color}{color:#000000}
{color}{color:#7f0055}new{color}{color:#000000} IllegalArgumentException({color}
{color:#2a00ff}"distErrPct "{color}{color:#000000} +
{color}{color:#6a3e3e}distErrPct{color}{color:#000000} +
{color}{color:#2a00ff}" must be between [0 to
0.5]"{color}{color:#000000});{color}
{color:#000000} }{color}
{color:#7f0055}if{color}{color:#000000}
({color}{color:#6a3e3e}distErrPct{color}{color:#000000} == 0 ||
{color}{color:#6a3e3e}shape{color}{color:#000000}
{color}{color:#7f0055}instanceof{color}{color:#000000}
{color}{color:#000000}Point{color}{color:#000000}) {{color}
{color:#7f0055}return{color}{color:#000000} 0;{color}
{color:#000000} }{color}
{color:#000000}Rectangle{color}{color:#000000}
{color}{color:#6a3e3e}bbox{color}{color:#000000} =
{color}{color:#6a3e3e}shape{color}{color:#000000}.getBoundingBox();{color}
{color:#3f7f5f}// Compute the distance from the center to a corner. Because the
distance{color}
{color:#3f7f5f}// to a bottom corner vs a top corner can vary in a
{color}{color:#3f7f5f}geospatial{color}{color:#3f7f5f} scenario,{color}
{color:#3f7f5f}// take the closest one (greater precision).{color}
{color:#000000}Point{color}{color:#000000}
{color}{color:#6a3e3e}ctr{color}{color:#000000} =
{color}{color:#6a3e3e}bbox{color}{color:#000000}.getCenter();{color}
{color:#7f0055}double{color}{color:#000000}
{color}{color:#6a3e3e}y{color}{color:#000000} =
({color}{color:#6a3e3e}ctr{color}{color:#000000}.getY() >= 0 ?
{color}{color:#6a3e3e}bbox{color}{color:#000000}.getMaxY() :
{color}{color:#6a3e3e}bbox{color}{color:#000000}.getMinY());{color}
{color:#7f0055}double{color}{color:#000000}
{color}{color:#6a3e3e}diagonalDist{color}{color:#000000} =
{color}{color:#6a3e3e}ctx{color}{color:#000000}.getDistCalc().distance({color}{color:#6a3e3e}ctr{color}{color:#000000},
{color}{color:#6a3e3e}bbox{color}{color:#000000}.getMaxX(),
{color}{color:#6a3e3e}y{color}{color:#000000});{color}
{color:#7f0055}return{color}{color:#000000}
{color}{color:#6a3e3e}diagonalDist{color}{color:#000000} *
{color}{color:#6a3e3e}distErrPct{color}{color:#000000};{color}
{color:#000000} }{color}
{color:#000000}dif ctx is null, {color:#6a3e3e}ctx{color}.getDistCalc() will
throw exceptions. I notice that lucene.net does not check this value in a
previous version, but it fixes the problem in a commit:{color}
[https://github.com/apache/lucenenet/commit/bf29f494e3663296ae4c17e4a9e7f173e4237a19]
The patch is as follows:
public static double CalcDistanceFromErrPct(IShape shape, double distErrPct,
SpatialContext ctx)
{
+ // LUCENENET: Added null guard clause
+ if (ctx is null)
+ throw new ArgumentNullException(nameof(ctx));
--
This message was sent by Atlassian Jira
(v8.20.10#820010)