Commit 4151d068 authored by Georgi Kodinov's avatar Georgi Kodinov

merge

parents 083a647e 9b3a3944
...@@ -1057,6 +1057,13 @@ NULL ...@@ -1057,6 +1057,13 @@ NULL
SELECT Polygon(12345123,''); SELECT Polygon(12345123,'');
Polygon(12345123,'') Polygon(12345123,'')
NULL NULL
#
# BUG#51875: crash when loading data into geometry function polyfromwkb
#
SET @a=0x00000000030000000100000000000000000000000000144000000000000014400000000000001840000000000000184000000000000014400000000000001440;
SET @a=POLYFROMWKB(@a);
SET @a=0x00000000030000000000000000000000000000000000144000000000000014400000000000001840000000000000184000000000000014400000000000001440;
SET @a=POLYFROMWKB(@a);
End of 5.1 tests End of 5.1 tests
CREATE TABLE t1( CREATE TABLE t1(
col0 BINARY NOT NULL, col0 BINARY NOT NULL,
......
...@@ -725,6 +725,16 @@ SELECT Polygon(123451,''); ...@@ -725,6 +725,16 @@ SELECT Polygon(123451,'');
SELECT Polygon(1234512,''); SELECT Polygon(1234512,'');
SELECT Polygon(12345123,''); SELECT Polygon(12345123,'');
--echo #
--echo # BUG#51875: crash when loading data into geometry function polyfromwkb
--echo #
SET @a=0x00000000030000000100000000000000000000000000144000000000000014400000000000001840000000000000184000000000000014400000000000001440;
SET @a=POLYFROMWKB(@a);
SET @a=0x00000000030000000000000000000000000000000000144000000000000014400000000000001840000000000000184000000000000014400000000000001440;
SET @a=POLYFROMWKB(@a);
--echo End of 5.1 tests --echo End of 5.1 tests
# #
......
...@@ -511,7 +511,7 @@ uint Gis_line_string::init_from_wkb(const char *wkb, uint len, ...@@ -511,7 +511,7 @@ uint Gis_line_string::init_from_wkb(const char *wkb, uint len,
n_points= wkb_get_uint(wkb, bo); n_points= wkb_get_uint(wkb, bo);
proper_length= 4 + n_points * POINT_DATA_SIZE; proper_length= 4 + n_points * POINT_DATA_SIZE;
if (len < proper_length || res->reserve(proper_length)) if (!n_points || len < proper_length || res->reserve(proper_length))
return 0; return 0;
res->q_append(n_points); res->q_append(n_points);
...@@ -729,7 +729,9 @@ uint Gis_polygon::init_from_wkb(const char *wkb, uint len, wkbByteOrder bo, ...@@ -729,7 +729,9 @@ uint Gis_polygon::init_from_wkb(const char *wkb, uint len, wkbByteOrder bo,
if (len < 4) if (len < 4)
return 0; return 0;
n_linear_rings= wkb_get_uint(wkb, bo); if (!(n_linear_rings= wkb_get_uint(wkb, bo)))
return 0;
if (res->reserve(4, 512)) if (res->reserve(4, 512))
return 0; return 0;
wkb+= 4; wkb+= 4;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment