ID:               31288
 Comment by:       kurt at indermaur dot com
 Reported By:      m dot brachner at gmx dot at
 Status:           Open
 Bug Type:         Reproducible crash
 Operating System: Windows XP
 PHP Version:      5CVS-2004-12-24 (dev)
 New Comment:

Failed for me with a "Segmentation Violation" on freebsd, php 4.3.10
and php 5.0.3 (switched to 5.x after encountering this bug), with mysql
4.0.22. I tracked it down to line 2250 of ext/mysql/php_mysql.c:

add_property_string(return_value,
"def",(mysql_field->def?mysql_field->def
:empty_string), 1);

According to mysql's documentation
(http://dev.mysql.com/doc/mysql/en/C_API_datatypes.html, with my
emphasis added):

char * def - The default value of this field, as a null-terminated
string. ***This is set only if you use mysql_list_fields()***.

My guess is that *def is never initialized, so it may very well not be
null, and then just about any attempt to retrieve its value will result
in a segmentation violation (or whatever your OS calls a reference to
memory outside the program's control).

A simple workaround for me was to comment out line 2250.


Previous Comments:
------------------------------------------------------------------------

[2004-12-25 18:53:53] m dot brachner at gmx dot at

Using CGI Version
Internet Information Server Version 5.1

------------------------------------------------------------------------

[2004-12-25 18:52:13] m dot brachner at gmx dot at

Using CGI Version
Internet Information Server Version 5.1

------------------------------------------------------------------------

[2004-12-24 17:18:21] m dot brachner at gmx dot at

Description:
------------
mysql_fetch_field produces an PHP-Crash. A Modal Window pops up (I have
a German XP):
php-cgi.exe Error in Application
The instruction at '0x1000589c' referenced memory at '0x00000001'.
The memory could not be read.
Click OK to terminate the program. 

MySQL Version 4.0.18

Reproduce code:
---------------
<?php
$conn = mysql_connect('localhost:3306', 'root', '');
mysql_select_db('odb');
$result = mysql_query('select * from classes');
/* get column metadata */
$i = 0;
while ($i < mysql_num_fields($result)) {
   echo "Information for column $i:<br />\n";
   $meta = mysql_fetch_field($result, $i);
   $i++;
}
mysql_free_result($result);
?> 

Expected result:
----------------
mysql_fetch_field should do the documented operations.

Actual result:
--------------
mysql_fetch_field produces an PHP-Crash. A Modal Window pops up (I have
a German XP):
php-cgi.exe Error in Application
The instruction at '0x1000589c' referenced memory at '0x00000001'.
The memory could not be read.
Click OK to terminate the program. 



------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=31288&edit=1

Reply via email to