Bug #10565 Updated: mysql_real_connect dumps core, fix included
| From: | cynic@php.net | Date: | Wed, 02 May 2001 14:46:44 +0000 |
| Subject: | Bug #10565 Updated: mysql_real_connect dumps core, fix included | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-53363@lists.php.net to get a copy of this message | ||
ID: 10565
Updated by: cynic
Reported By: glen@ldscn.com
Old-Status: Open
Status: Analyzed
Bug Type: MySQL related
PHP Version: 4.0.4pl1
Assigned To:
Comments:
I had a conversation with Sinisa, this is the outcome. If it isn't true, please contact the
MySQL team directly. All in all, you said it's a bug in MySQL.
From: Sinisa Milivojevic <sinisa@mysql.com>
To: cynic@xxx.yyy
Cc: win32@lists.mysql.com
Subject: Re: mysql_real_connect dumps core
Cynic writes:
> no, the patch was (probably) generated with diff -c. read:
>
> - mysql_init(mysql);
> ---
> + mysql = mysql_init(NULL);
>
MYSQL *mysql = (MYSQL *)NULL;
mysql = mysql_init(mysql);
mysql_real_connect(mysql,...
must work on any system with 3.23 client API.
Regards,
Sinisa
____ __ _____ _____ ___ == MySQL AB
/*/\*\/\*\ /*/ \*\ /*/ \*\ |*| Sinisa Milivojevic
/*/ /*/ /*/ \*\_ |*| |*||*| mailto:sinisa@mysql.com
/*/ /*/ /*/\*\/*/ \*\|*| |*||*| Larnaca, Cyprus
/*/ /*/ /*/\*\_/*/ \*\_/*/ |*|____
^^^^^^^^^^^^/*/^^^^^^^^^^^\*\^^^^^^^^^^^
/*/ \*\ Developers Team
Previous Comments:
---------------------------------------------------------------------------
[2001-05-02 06:59:39] cynic@php.net
mailed MySQL
---------------------------------------------------------------------------
[2001-04-30 16:57:34] glen@ldscn.com
** This is a problem in MySql. This report provides a code
modification to compensate for the MySql problem. **
Under SCO OpenServer 5.0.6, Apache 1.3.19, PHP 4.0.4 PL 1,
and MySql 3.23.36 (precompiled MySQL for OpenServer 5.0.x),
calls to mysql_real_connect will silently dump core if
mysql_init was not allowed to *allocate* the memory for the
MySQL structure.
To function properly, mysql_init must be passed NULL, thus
allowing it to allocate and manage the memory. If you use
a previously malloc()'ed or static structure, MySQL will
dump core on connect.
We find this problem to be present in MySQL, and can
duplicate it using a C code stub. The problem, of course,
also exists in PHP, causing a core dump there as well,
since PHP pre-malloc()'s its own structure.
Here is a DIFF for ext/mysql/php_mysql.c which fixes the
problem for us. It's ugly, and hack-y, but it works. FYI.
198c198
< efree(link);
---
> /* efree(link); */
456c456
< mysql = (MYSQL *) malloc(sizeof(MYSQL));
---
> /* mysql = (MYSQL *) malloc(sizeof(MYSQL)); */
458c458
< mysql_init(mysql);
---
> mysql = mysql_init(NULL);
542c542
< mysql = (MYSQL *) emalloc(sizeof(MYSQL));
---
> /* mysql = (MYSQL *) emalloc(sizeof(MYSQL)); */
544c544
< mysql_init(mysql);
---
> mysql = mysql_init(NULL);
---------------------------------------------------------------------------
ATTENTION! Do NOT reply to this email!
To reply, use the web interface found at http://bugs.php.net/?id=10565&edit=2