Re: cvs: php4 /ext/mysql php_mysql.c

From: Date: Sun, 28 Apr 2002 09:35:47 +0000
Subject: Re: cvs: php4 /ext/mysql php_mysql.c
References: 1  Groups: php.cvs 
Request: Send a blank email to php-cvs+get-11496@lists.php.net to get a copy of this message
Hi, I hope you know that you can easily fool this: php -r ' error_reporting(E_ALL); $l = mysql_connect("","phptest1","phptest1"); mysql_select_db("phptest1"); mysql_query("use phptest2"); $foo = mysql_select_db("phptest1", $l, true); var_dump($foo); '; The script outputs "phptest1" though the last used database was "phptest2". - Markus On Sun, Apr 28, 2002 at 06:38:13AM -0000, Jani Taskinen wrote : > sniper Sun Apr 28 02:38:13 2002 EDT > > Modified files: > /php4/ext/mysql php_mysql.c > Log: > @- Added optional 3rd parameter to mysql_select_db() which makes it return > @ the previously selected database name. (Jani) > > > Index: php4/ext/mysql/php_mysql.c > diff -u php4/ext/mysql/php_mysql.c:1.134 php4/ext/mysql/php_mysql.c:1.135 > --- php4/ext/mysql/php_mysql.c:1.134 Sun Apr 28 01:36:05 2002 > +++ php4/ext/mysql/php_mysql.c Sun Apr 28 02:38:12 2002 > @@ -16,7 +16,7 @@ > +----------------------------------------------------------------------+ > */ > > -/* $Id: php_mysql.c,v 1.134 2002/04/28 05:36:05 sniper Exp $ */ > +/* $Id: php_mysql.c,v 1.135 2002/04/28 06:38:12 sniper Exp $ */ > > > /* TODO: > @@ -769,13 +769,14 @@ > } > /* }}} */ > > -/* {{{ proto bool mysql_select_db(string database_name [, int link_identifier]) > +/* {{{ proto bool mysql_select_db(string database_name [, int link_identifier [, bool > return_prev_dbname]]) > Selects a MySQL database */ > PHP_FUNCTION(mysql_select_db) > { > - zval **db, **mysql_link; > - int id; > + zval **db, **mysql_link, **ret_prevdb; > + int id, ret_dbname=0; > php_mysql_conn *mysql; > + char *prev_db=NULL; > > switch(ZEND_NUM_ARGS()) { > case 1: > @@ -791,20 +792,38 @@ > } > id = -1; > break; > + case 3: > + if (zend_get_parameters_ex(3, &db, &mysql_link, &ret_prevdb)==FAILURE) { > + RETURN_FALSE; > + } > + id = -1; > + convert_to_long_ex(ret_prevdb); > + ret_dbname = Z_LVAL_PP(ret_prevdb); > + break; > default: > WRONG_PARAM_COUNT; > break; > } > - > - > + > ZEND_FETCH_RESOURCE2(mysql, php_mysql_conn *, mysql_link, id, "MySQL-Link", > le_link, le_plink); > > convert_to_string_ex(db); > + > + /* Get the previous database name */ > + if (ret_dbname && mysql->conn.db) { > + prev_db=estrdup(mysql->conn.db); > + } > > if (mysql_select_db(&mysql->conn, Z_STRVAL_PP(db))!=0) { > - RETURN_FALSE; > + RETVAL_FALSE; > + } else if (prev_db) { > + RETVAL_STRING(prev_db, 1); > } else { > - RETURN_TRUE; > + RETVAL_TRUE; > + } > + > + if (prev_db) { > + efree(prev_db); > } > } > /* }}} */ > > > > -- > PHP CVS Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php -- Please always Cc to me when replying to me on the lists. GnuPG Key: http://guru.josefine.at/~mfischer/C2272BD0.asc "Mind if I MFH ?" "What QA did you do on it?" "the usual?" "ah... none :)"

« previous php.cvs (#11496) next »