diff options
| author | Antony Dovgal <tony2001@php.net> | 2005-10-10 20:03:00 +0000 |
|---|---|---|
| committer | Antony Dovgal <tony2001@php.net> | 2005-10-10 20:03:00 +0000 |
| commit | a5cea052e8a34ac38923d38261b2025f229133ee (patch) | |
| tree | 5faca3b86e173402b19fbdc757d9aaaf96e44ce2 /ext/mysqli/mysqli.c | |
| parent | 44205dc58ae7fbe08f107da11fc9f70196949069 (diff) | |
| download | php-git-a5cea052e8a34ac38923d38261b2025f229133ee.tar.gz | |
fix #34818 (new mysqli_stmt() and several others crash if the first parameter is not a valid mysqli_link)
Diffstat (limited to 'ext/mysqli/mysqli.c')
| -rw-r--r-- | ext/mysqli/mysqli.c | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/ext/mysqli/mysqli.c b/ext/mysqli/mysqli.c index 436cc3ccef..e78558a727 100644 --- a/ext/mysqli/mysqli.c +++ b/ext/mysqli/mysqli.c @@ -652,33 +652,34 @@ Parameters: ZEND_FUNCTION(mysqli_stmt_construct) { MY_MYSQL *mysql; - zval **mysql_link, **statement; + zval *mysql_link; MY_STMT *stmt; MYSQLI_RESOURCE *mysqli_resource; + char *statement; + int stmt_len; switch (ZEND_NUM_ARGS()) { case 1: /* mysql_stmt_init */ - if (zend_get_parameters_ex(1, &mysql_link)==FAILURE) { + if (zend_parse_parameters(1, "O", &mysql_link, mysqli_link_class_entry)==FAILURE) { return; } - MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, mysql_link, "mysqli_link"); + MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link"); stmt = (MY_STMT *)ecalloc(1,sizeof(MY_STMT)); stmt->stmt = mysql_stmt_init(mysql->mysql); break; case 2: - if (zend_get_parameters_ex(2, &mysql_link, &statement)==FAILURE) { + if (zend_parse_parameters(2, "Os", &mysql_link, mysqli_link_class_entry, &statement, &stmt_len)==FAILURE) { return; } - MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, mysql_link, "mysqli_link"); - convert_to_string_ex(statement); + MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link"); stmt = (MY_STMT *)ecalloc(1,sizeof(MY_STMT)); if ((stmt->stmt = mysql_stmt_init(mysql->mysql))) { - mysql_stmt_prepare(stmt->stmt, Z_STRVAL_PP(statement), strlen(Z_STRVAL_PP(statement))); + mysql_stmt_prepare(stmt->stmt, statement, stmt_len); } break; default: @@ -708,27 +709,26 @@ ZEND_FUNCTION(mysqli_result_construct) { MY_MYSQL *mysql; MYSQL_RES *result; - zval **mysql_link, **mode; + zval *mysql_link; MYSQLI_RESOURCE *mysqli_resource; - int resmode = MYSQLI_STORE_RESULT; + long resmode = MYSQLI_STORE_RESULT; switch (ZEND_NUM_ARGS()) { case 1: - if (zend_get_parameters_ex(1, &mysql_link)==FAILURE) { + if (zend_parse_parameters(1, "O", &mysql_link, mysqli_link_class_entry)==FAILURE) { return; } break; case 2: - if (zend_get_parameters_ex(2, &mysql_link, &mode)==FAILURE) { + if (zend_parse_parameters(2, "Ol", &mysql_link, mysqli_link_class_entry, &resmode)==FAILURE) { return; } - resmode = Z_LVAL_PP(mode); break; default: WRONG_PARAM_COUNT; } - MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, mysql_link, "mysqli_link"); + MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link"); result = (resmode == MYSQLI_STORE_RESULT) ? mysql_store_result(mysql->mysql) : mysql_use_result(mysql->mysql); |
