Fix for bug#57283: inet_ntoa() crashes

Problem: some call of INET_NTOA() function may lead 
to a crash due to missing its character set initialization.

Fix: explicitly set the character set.
This commit is contained in:
Ramil Kalimullin 2010-10-12 23:28:03 +04:00
parent 5a2a6c2c0d
commit 9ef7eac2c0
3 changed files with 15 additions and 0 deletions

View File

@ -351,4 +351,10 @@ GREATEST(a, (SELECT b FROM t1 LIMIT 1))
3
1
DROP TABLE t1;
SELECT INET_NTOA(0);
INET_NTOA(0)
0.0.0.0
SELECT '1' IN ('1', INET_NTOA(0));
'1' IN ('1', INET_NTOA(0))
1
End of tests

View File

@ -479,4 +479,12 @@ SELECT DISTINCT GREATEST(a, (SELECT b FROM t1 LIMIT 1)) FROM t1 UNION SELECT 1;
DROP TABLE t1;
#
# Bug #57283: inet_ntoa() crashes
#
SELECT INET_NTOA(0);
SELECT '1' IN ('1', INET_NTOA(0));
--echo End of tests

View File

@ -3135,6 +3135,7 @@ String* Item_func_inet_ntoa::val_str(String* str)
if ((null_value= (args[0]->null_value || n > (ulonglong) LL(4294967295))))
return 0; // Null value
str->set_charset(collation.collation);
str->length(0);
int4store(buf,n);