summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorg Richter <georg@php.net>2004-12-20 16:39:14 +0000
committerGeorg Richter <georg@php.net>2004-12-20 16:39:14 +0000
commit5c50f0bb30892e7e5f07d1a5dab362948af9c56f (patch)
tree604c1fd7c4793dbf4eebebd393952a8ea781249e
parent7152b3811ed4faec4373618f984df8e8fe485891 (diff)
downloadphp-git-5c50f0bb30892e7e5f07d1a5dab362948af9c56f.tar.gz
prevent type conversion during mysql_stmt_execute for NULL variables
-rw-r--r--ext/mysqli/mysqli_api.c36
1 files changed, 18 insertions, 18 deletions
diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c
index 4e3dda9d3f..b756184b54 100644
--- a/ext/mysqli/mysqli_api.c
+++ b/ext/mysqli/mysqli_api.c
@@ -539,24 +539,24 @@ PHP_FUNCTION(mysqli_stmt_execute)
for (i = 0; i < stmt->param.var_cnt; i++) {
if (stmt->param.vars[i]) {
- stmt->param.is_null[i] = (stmt->param.vars[i]->type == IS_NULL);
-
- switch (stmt->stmt->params[i].buffer_type) {
- case MYSQL_TYPE_VAR_STRING:
- convert_to_string_ex(&stmt->param.vars[i]);
- stmt->stmt->params[i].buffer = Z_STRVAL_PP(&stmt->param.vars[i]);
- stmt->stmt->params[i].buffer_length = strlen(Z_STRVAL_PP(&stmt->param.vars[i]));
- break;
- case MYSQL_TYPE_DOUBLE:
- convert_to_double_ex(&stmt->param.vars[i]);
- stmt->stmt->params[i].buffer = (gptr)&Z_LVAL_PP(&stmt->param.vars[i]);
- break;
- case MYSQL_TYPE_LONG:
- convert_to_long_ex(&stmt->param.vars[i]);
- stmt->stmt->params[i].buffer = (gptr)&Z_LVAL_PP(&stmt->param.vars[i]);
- break;
- default:
- break;
+ if ( !(stmt->param.is_null[i] = (stmt->param.vars[i]->type == IS_NULL)) ) {
+ switch (stmt->stmt->params[i].buffer_type) {
+ case MYSQL_TYPE_VAR_STRING:
+ convert_to_string_ex(&stmt->param.vars[i]);
+ stmt->stmt->params[i].buffer = Z_STRVAL_PP(&stmt->param.vars[i]);
+ stmt->stmt->params[i].buffer_length = strlen(Z_STRVAL_PP(&stmt->param.vars[i]));
+ break;
+ case MYSQL_TYPE_DOUBLE:
+ convert_to_double_ex(&stmt->param.vars[i]);
+ stmt->stmt->params[i].buffer = (gptr)&Z_LVAL_PP(&stmt->param.vars[i]);
+ break;
+ case MYSQL_TYPE_LONG:
+ convert_to_long_ex(&stmt->param.vars[i]);
+ stmt->stmt->params[i].buffer = (gptr)&Z_LVAL_PP(&stmt->param.vars[i]);
+ break;
+ default:
+ break;
+ }
}
}
}