Commit e857f561 authored by monty@tik.mysql.fi's avatar monty@tik.mysql.fi

Fix for INET_NTOA(N) when N >= 2^32

parent 4cae9fe9
...@@ -10936,16 +10936,10 @@ CC=gcc CXX=gcc ./configure ... (options) ...@@ -10936,16 +10936,10 @@ CC=gcc CXX=gcc ./configure ... (options)
@enumerate @enumerate
@item @item
For OpenServer 5.0.X you need to use GDS in Skunkware 95 (95q4c). This For OpenServer 5.0.X you need to use gcc-2.95.2p1 or newer from the
is necessary because GNU @code{gcc} 2.7.2 in Skunkware 97 does not have Skunkware. http://www.caldera.com/skunkware/ and choose browser
GNU @code{as}. You can also use @code{egcs} 1.1.2 or newer OpenServer packages or by ftp to ftp2.caldera.com in the
@uref{http://www.egcs.com/}. If you are using @code{egcs} 1.1.2 you have pub/skunkware/osr5/devtools/gcc directory.
to execute the following command:
@example
shell> cp -p /usr/include/pthread/stdtypes.h \
/usr/local/lib/gcc-lib/i386-pc-sco3.2v5.0.5/egcs-2.91.66/include/pthread/
@end example
@item @item
You need the port of GCC 2.5.x for this product and the Development You need the port of GCC 2.5.x for this product and the Development
...@@ -11031,7 +11025,6 @@ MySQL should automatically detect FSU Pthreads and link @code{mysqld} ...@@ -11031,7 +11025,6 @@ MySQL should automatically detect FSU Pthreads and link @code{mysqld}
with @code{-lgthreads -lsocket -lgthreads}. with @code{-lgthreads -lsocket -lgthreads}.
@item @item
The Caldera (SCO) development libraries are re-entrant in FSU Pthreads. The Caldera (SCO) development libraries are re-entrant in FSU Pthreads.
Caldera claim sthat its libraries' functions are re-entrant, so they must Caldera claim sthat its libraries' functions are re-entrant, so they must
be reentrant with FSU Pthreads. FSU Pthreads on OpenServer tries to use be reentrant with FSU Pthreads. FSU Pthreads on OpenServer tries to use
...@@ -11101,7 +11094,18 @@ CC=cc CXX=CC ./configure --prefix=/usr/local/mysql ...@@ -11101,7 +11094,18 @@ CC=cc CXX=CC ./configure --prefix=/usr/local/mysql
If you want to use @code{gcc}, you must use @code{gcc} 2.95.2 or newer. If you want to use @code{gcc}, you must use @code{gcc} 2.95.2 or newer.
Caldera provides libsocket.so.2 at
@uref{ftp://stage.caldera.com/pub/security/tools} for
pre-OSR506 security fixes. Also, the telnetd fix at
@url{ftp://stage.caldera.com/pub/security/openserver/CSSA-2001-SCO.10/}
as both libsocket.so.2 and libresolv.so.1 with instructions for
installing on pre-OSR506 systems.
It's probably a good idea to install the above patches before trying to
compile/use MySQL.
@node OS/2, BeOS, Other Unix Notes, Operating System Specific Notes @node OS/2, BeOS, Other Unix Notes, Operating System Specific Notes
@subsection OS/2 Notes @subsection OS/2 Notes
MySQL uses quite a few open files. Because of this, you should add MySQL uses quite a few open files. Because of this, you should add
...@@ -46660,7 +46664,7 @@ Many crashes of MySQL are caused by corrupted index / data ...@@ -46660,7 +46664,7 @@ Many crashes of MySQL are caused by corrupted index / data
files. MySQL will update the data on disk, with the files. MySQL will update the data on disk, with the
@code{write()} system call, after every SQL statement and before the @code{write()} system call, after every SQL statement and before the
client is notified about the result. (This is not true if you are running client is notified about the result. (This is not true if you are running
with @code{delayed_key_writes}, in which case only the data is written.) with @code{delay_key_write}, in which case only the data is written.)
This means that the data is safe even if @code{mysqld} crashes, as the OS will This means that the data is safe even if @code{mysqld} crashes, as the OS will
ensure that the not flushed data is written to disk. You can force ensure that the not flushed data is written to disk. You can force
MySQL to sync everything to disk after every SQL command by MySQL to sync everything to disk after every SQL command by
...@@ -48945,6 +48949,8 @@ Our TODO section contains what we plan to have in 4.0. @xref{TODO MySQL 4.0}. ...@@ -48945,6 +48949,8 @@ Our TODO section contains what we plan to have in 4.0. @xref{TODO MySQL 4.0}.
@appendixsubsec Changes in release 4.0.2 @appendixsubsec Changes in release 4.0.2
@itemize @bullet @itemize @bullet
§item
@code{INET_NTOA()} now returns @code{NULL} if you give it a too big argument.
@item @item
Don't give an error for @code{CREATE TABLE ...(... VARCHAR(0))}. Don't give an error for @code{CREATE TABLE ...(... VARCHAR(0))}.
@item @item
...@@ -49381,7 +49387,7 @@ not yet 100% confident in this code. ...@@ -49381,7 +49387,7 @@ not yet 100% confident in this code.
@item @item
Fixed @code{SIGINT} and @code{SIGQUIT} problems in @code{mysql}. Fixed @code{SIGINT} and @code{SIGQUIT} problems in @code{mysql}.
@item @item
Fixed bug in character table converts. Fixed bug in character table converts when used with big ( > 64K) strings.
@end itemize @end itemize
@node News-3.23.50, News-3.23.49, News-3.23.51, News-3.23.x @node News-3.23.50, News-3.23.49, News-3.23.51, News-3.23.x
...@@ -51278,7 +51284,7 @@ Put @code{CREATE TEMPORARY TABLE} commands in the update log. ...@@ -51278,7 +51284,7 @@ Put @code{CREATE TEMPORARY TABLE} commands in the update log.
@item @item
Fixed bug in handling of masked IP numbers in the privilege tables. Fixed bug in handling of masked IP numbers in the privilege tables.
@item @item
Fixed bug with @code{delayed_key_writes} tables and @code{CHECK TABLE}. Fixed bug with @code{delay_key_write} tables and @code{CHECK TABLE}.
@item @item
Added @code{replicate-do-db} and @code{replicate-ignore-db} options to Added @code{replicate-do-db} and @code{replicate-ignore-db} options to
@code{mysqld}, to restrict which databases get replicated. @code{mysqld}, to restrict which databases get replicated.
...@@ -51672,7 +51678,7 @@ threads are reading from the table. ...@@ -51672,7 +51678,7 @@ threads are reading from the table.
Added @code{max_write_lock_count} variable to @code{mysqld} to force a Added @code{max_write_lock_count} variable to @code{mysqld} to force a
@code{READ} lock after a certain number of @code{WRITE} locks. @code{READ} lock after a certain number of @code{WRITE} locks.
@item @item
Inverted flag @code{delayed_key_write} on @code{show variables}. Inverted flag @code{delay_key_write} on @code{show variables}.
@item @item
Renamed @code{concurrency} variable to @code{thread_concurrency}. Renamed @code{concurrency} variable to @code{thread_concurrency}.
@item @item
...@@ -340,7 +340,6 @@ int main(int argc,char *argv[]) ...@@ -340,7 +340,6 @@ int main(int argc,char *argv[])
if (!status.batch) if (!status.batch)
ignore_errors=1; // Don't abort monitor ignore_errors=1; // Don't abort monitor
signal(SIGINT, mysql_end); // Catch SIGINT to clean up signal(SIGINT, mysql_end); // Catch SIGINT to clean up
signal(SIGQUIT, mysql_end); // Catch SIGQUIT to clean up
/* /*
** Run in interactive mode like the ingres/postgres monitor ** Run in interactive mode like the ingres/postgres monitor
......
...@@ -1921,24 +1921,23 @@ String* Item_func_inet_ntoa::val_str(String* str) ...@@ -1921,24 +1921,23 @@ String* Item_func_inet_ntoa::val_str(String* str)
uchar buf[8], *p; uchar buf[8], *p;
ulonglong n = (ulonglong) args[0]->val_int(); ulonglong n = (ulonglong) args[0]->val_int();
char num[4]; char num[4];
/* /*
we do not know if args[0] is NULL until we have called We do not know if args[0] is NULL until we have called
some val function on it if args[0] is not a constant! some val function on it if args[0] is not a constant!
Also return null if n > 255.255.255.255
*/ */
if ((null_value=args[0]->null_value)) if ((null_value= (args[0]->null_value || n > (ulonglong) LL(4294967295))))
return 0; // Null value return 0; // Null value
str->length(0); str->length(0);
int8store(buf,n); int4store(buf,n);
/* /* Now we can assume little endian. */
Now we can assume little endian.
We handle the possibility of an 8-byte IP address however, we do
not want to confuse those who are just using 4 byte ones
*/
for (p= buf + 8; p > buf+4 && p[-1] == 0 ; p-- ) ;
num[3]='.'; num[3]='.';
while (p-- > buf) for (p=buf+4 ; p-- > buf ; )
{ {
uint c = *p; uint c = *p;
uint n1,n2; // Try to avoid divisions uint n1,n2; // Try to avoid divisions
......
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