MDEV-4295 Server crashes in get_point on a query with Area, AsBinary, MultiPoint.
Need to check if the number of points is 0 for the polygon.
This commit is contained in:
parent
15a7335d77
commit
ef737284b4
@ -1108,4 +1108,10 @@ NULL
|
|||||||
SELECT Centroid( AsBinary( LineString(Point(0,0), Point(0,0), Point(0,0) )));
|
SELECT Centroid( AsBinary( LineString(Point(0,0), Point(0,0), Point(0,0) )));
|
||||||
Centroid( AsBinary( LineString(Point(0,0), Point(0,0), Point(0,0) )))
|
Centroid( AsBinary( LineString(Point(0,0), Point(0,0), Point(0,0) )))
|
||||||
NULL
|
NULL
|
||||||
|
#
|
||||||
|
# MDEV-4295 Server crashes in get_point on a query with Area, AsBinary, MultiPoint
|
||||||
|
#
|
||||||
|
SELECT Area(AsBinary(MultiPoint(Point(0,9), Point(0,1), Point(2,2))));
|
||||||
|
Area(AsBinary(MultiPoint(Point(0,9), Point(0,1), Point(2,2))))
|
||||||
|
NULL
|
||||||
End of 5.1 tests
|
End of 5.1 tests
|
||||||
|
@ -839,4 +839,9 @@ select geometryn(0x0100000000070000000100000001030000000200000000000000ffffff0f,
|
|||||||
--echo #
|
--echo #
|
||||||
|
|
||||||
SELECT Centroid( AsBinary( LineString(Point(0,0), Point(0,0), Point(0,0) )));
|
SELECT Centroid( AsBinary( LineString(Point(0,0), Point(0,0), Point(0,0) )));
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-4295 Server crashes in get_point on a query with Area, AsBinary, MultiPoint
|
||||||
|
--echo #
|
||||||
|
SELECT Area(AsBinary(MultiPoint(Point(0,9), Point(0,1), Point(2,2))));
|
||||||
--echo End of 5.1 tests
|
--echo End of 5.1 tests
|
||||||
|
@ -868,7 +868,7 @@ int Gis_polygon::area(double *ar, const char **end_of_data) const
|
|||||||
if (no_data(data, 4))
|
if (no_data(data, 4))
|
||||||
return 1;
|
return 1;
|
||||||
n_points= uint4korr(data);
|
n_points= uint4korr(data);
|
||||||
if (n_points > max_n_points ||
|
if (n_points == 0 || n_points > max_n_points ||
|
||||||
no_data(data, (SIZEOF_STORED_DOUBLE*2) * n_points))
|
no_data(data, (SIZEOF_STORED_DOUBLE*2) * n_points))
|
||||||
return 1;
|
return 1;
|
||||||
get_point(&prev_x, &prev_y, data+4);
|
get_point(&prev_x, &prev_y, data+4);
|
||||||
@ -989,7 +989,7 @@ int Gis_polygon::centroid_xy(double *x, double *y) const
|
|||||||
return 1;
|
return 1;
|
||||||
org_n_points= n_points= uint4korr(data);
|
org_n_points= n_points= uint4korr(data);
|
||||||
data+= 4;
|
data+= 4;
|
||||||
if (n_points > max_n_points ||
|
if (n_points == 0 || n_points > max_n_points ||
|
||||||
no_data(data, (SIZEOF_STORED_DOUBLE*2) * n_points))
|
no_data(data, (SIZEOF_STORED_DOUBLE*2) * n_points))
|
||||||
return 1;
|
return 1;
|
||||||
get_point(&prev_x, &prev_y, data);
|
get_point(&prev_x, &prev_y, data);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user