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)

Reply via email to