Re: cvs: php4 /ext/mysql php_mysql.c
| From: | Markus Fischer | 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 :)"