@@ -1241,7 +1241,7 @@ static void _php_pgsql_free_params(char **params, uint32_t num_params)
12411241 efree (params );
12421242}
12431243
1244- static char * * php_pgsql_make_arguments (const HashTable * param_arr , int * num_params )
1244+ static char * * php_pgsql_make_arguments (const HashTable * param_arr , int * num_params , uint32_t arg_num )
12451245{
12461246 /* This conversion is safe because of the limit of number of elements in a table. */
12471247 * num_params = (int ) zend_hash_num_elements (param_arr );
@@ -1252,6 +1252,10 @@ static char **php_pgsql_make_arguments(const HashTable *param_arr, int *num_para
12521252 ZVAL_DEREF (tmp );
12531253 if (Z_TYPE_P (tmp ) == IS_NULL ) {
12541254 params [i ] = NULL ;
1255+ } else if (Z_TYPE_P (tmp ) == IS_TRUE || Z_TYPE_P (tmp ) == IS_FALSE ) {
1256+ zend_argument_value_error (arg_num , "must not contain boolean values, use a string representation instead" );
1257+ _php_pgsql_free_params (params , i );
1258+ return NULL ;
12551259 } else {
12561260 zend_string * param_str = zval_try_get_string (tmp );
12571261 if (!param_str ) {
@@ -1318,7 +1322,7 @@ PHP_FUNCTION(pg_query_params)
13181322 php_error_docref (NULL , E_NOTICE , "Found results on this connection. Use pg_get_result() to get these results first" );
13191323 }
13201324
1321- params = php_pgsql_make_arguments (Z_ARRVAL_P (pv_param_arr ), & num_params );
1325+ params = php_pgsql_make_arguments (Z_ARRVAL_P (pv_param_arr ), & num_params , ZEND_NUM_ARGS () );
13221326 if (UNEXPECTED (!params )) {
13231327 RETURN_THROWS ();
13241328 }
@@ -1501,7 +1505,7 @@ PHP_FUNCTION(pg_execute)
15011505 php_error_docref (NULL , E_NOTICE , "Found results on this connection. Use pg_get_result() to get these results first" );
15021506 }
15031507
1504- params = php_pgsql_make_arguments (Z_ARRVAL_P (pv_param_arr ), & num_params );
1508+ params = php_pgsql_make_arguments (Z_ARRVAL_P (pv_param_arr ), & num_params , ZEND_NUM_ARGS () );
15051509 if (UNEXPECTED (!params )) {
15061510 RETURN_THROWS ();
15071511 }
@@ -4058,7 +4062,7 @@ PHP_FUNCTION(pg_send_query_params)
40584062 "There are results on this connection. Call pg_get_result() until it returns FALSE" );
40594063 }
40604064
4061- params = php_pgsql_make_arguments (Z_ARRVAL_P (pv_param_arr ), & num_params );
4065+ params = php_pgsql_make_arguments (Z_ARRVAL_P (pv_param_arr ), & num_params , 3 );
40624066 if (UNEXPECTED (!params )) {
40634067 RETURN_THROWS ();
40644068 }
@@ -4213,7 +4217,7 @@ PHP_FUNCTION(pg_send_execute)
42134217 "There are results on this connection. Call pg_get_result() until it returns FALSE" );
42144218 }
42154219
4216- params = php_pgsql_make_arguments (Z_ARRVAL_P (pv_param_arr ), & num_params );
4220+ params = php_pgsql_make_arguments (Z_ARRVAL_P (pv_param_arr ), & num_params , 3 );
42174221 if (UNEXPECTED (!params )) {
42184222 RETURN_THROWS ();
42194223 }
0 commit comments