summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdin Kadribasic <edink@php.net>2005-09-03 23:50:25 +0000
committerEdin Kadribasic <edink@php.net>2005-09-03 23:50:25 +0000
commit38317bb3bd0dd41125ceb683964dac1fd4610516 (patch)
tree31ef5faa9b33511a70eebc248f36d58717fd30fb
parent6bc126681c19a058c7624898320f125e9f0593e4 (diff)
downloadphp-git-38317bb3bd0dd41125ceb683964dac1fd4610516.tar.gz
Don't crash on invalid parameter #34203 (Wez)
-rw-r--r--ext/pdo_pgsql/pgsql_statement.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/ext/pdo_pgsql/pgsql_statement.c b/ext/pdo_pgsql/pgsql_statement.c
index 4ad96b8adb..9e6420eeb4 100644
--- a/ext/pdo_pgsql/pgsql_statement.c
+++ b/ext/pdo_pgsql/pgsql_statement.c
@@ -198,15 +198,17 @@ static int pgsql_stmt_param_hook(pdo_stmt_t *stmt, struct pdo_bound_param_data *
sizeof(int));
}
- if (PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_NULL ||
- Z_TYPE_P(param->parameter) == IS_NULL) {
- S->param_values[param->paramno] = NULL;
- S->param_lengths[param->paramno] = 0;
- } else {
- convert_to_string(param->parameter);
- S->param_values[param->paramno] = Z_STRVAL_P(param->parameter);
- S->param_lengths[param->paramno] = Z_STRLEN_P(param->parameter);
- S->param_formats[param->paramno] = 1;
+ if (param->paramno >= 0) {
+ if (PDO_PARAM_TYPE(param->param_type) == PDO_PARAM_NULL ||
+ Z_TYPE_P(param->parameter) == IS_NULL) {
+ S->param_values[param->paramno] = NULL;
+ S->param_lengths[param->paramno] = 0;
+ } else {
+ convert_to_string(param->parameter);
+ S->param_values[param->paramno] = Z_STRVAL_P(param->parameter);
+ S->param_lengths[param->paramno] = Z_STRLEN_P(param->parameter);
+ S->param_formats[param->paramno] = 1;
+ }
}
break;
}