summaryrefslogtreecommitdiff
path: root/ext/mysqli/mysqli.c
diff options
context:
space:
mode:
authorAntony Dovgal <tony2001@php.net>2005-10-10 20:03:00 +0000
committerAntony Dovgal <tony2001@php.net>2005-10-10 20:03:00 +0000
commita5cea052e8a34ac38923d38261b2025f229133ee (patch)
tree5faca3b86e173402b19fbdc757d9aaaf96e44ce2 /ext/mysqli/mysqli.c
parent44205dc58ae7fbe08f107da11fc9f70196949069 (diff)
downloadphp-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.c26
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);