PHP 4.0 Bug #8951 Updated: php_mysql_do_connect -> parameter host modified when using port or socket
| From: | sniper@php.net | Date: | Sun, 28 Jan 2001 02:34:57 +0000 |
| Subject: | PHP 4.0 Bug #8951 Updated: php_mysql_do_connect -> parameter host modified when using port or socket | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-45182@lists.php.net to get a copy of this message | ||
ID: 8951
Updated by: sniper
Reported By: jiri.kaderavek@webstep.net
Old-Status: Open
Status: Feedback
Bug Type: MySQL related
Assigned To:
Comments:
Could you please try the latest snapshot from http://snaps.php.net/
to check if this is fixed already?
--Jani
Previous Comments:
---------------------------------------------------------------------------
[2001-01-27 12:46:46] jiri.kaderavek@webstep.net
Parameter $host is modified in function php_mysql_do_connect(). Example:
$host = "localhost:/tmp/mysql.sock";
$conn = mysql_connect($host .....
echo $host;
Output is: localhost/tmp/mysql.sock
because of replacing of ":" charcter by null char in
this part of php_mysql_do_connect
===================
static void php_mysql_do_connect(INTERNAL_FUNCTION_PARAMETERS,int persistent)
{
char *user,*passwd,*host,*socket=NULL,*tmp;
char *hashed_details;
int hashed_details_length,port = MYSQL_PORT;
....
/* We cannot use mysql_port anymore in windows, need to use
* mysql_real_connect() to set the port.
*/
if (host && (tmp=strchr(host,':'))) {
*tmp=0;
tmp++;
if (tmp[0] != '/') {
port = atoi(tmp);
} else {
socket = tmp;
}
.....
}
===================
solution:
copying of *host content through *host2 pointer
===================
static void php_mysql_do_connect(INTERNAL_FUNCTION_PARAMETERS,int persistent)
{
char *user,*passwd,*host,*socket=NULL,*tmp,*host2;
char *hashed_details;
int hashed_details_length,port = MYSQL_PORT;
....
/* We cannot use mysql_port anymore in windows, need to use
* mysql_real_connect() to set the port.
*/
host2 = (char *) emalloc(strlen(SAFE_STRING(host) + 1));
strcpy(host2, host);
host = host2;
if (host && (tmp=strchr(host,':'))) {
*tmp=0;
tmp++;
if (tmp[0] != '/') {
port = atoi(tmp);
} else {
socket = tmp;
}
...
}
---------------------------------------------------------------------------
Full Bug description available at: http://bugs.php.net/?id=8951