mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-27 08:39:28 +08:00
Add checks for valid encoding of query strings passed to SPI by plperl.
This commit is contained in:
parent
b989662bf1
commit
6fcd5010e2
@ -1,7 +1,7 @@
|
|||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
* plperl.c - perl as a procedural language for PostgreSQL
|
* plperl.c - perl as a procedural language for PostgreSQL
|
||||||
*
|
*
|
||||||
* $PostgreSQL: pgsql/src/pl/plperl/plperl.c,v 1.169 2010/02/26 02:01:33 momjian Exp $
|
* $PostgreSQL: pgsql/src/pl/plperl/plperl.c,v 1.170 2010/03/09 02:48:33 adunstan Exp $
|
||||||
*
|
*
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
@ -2102,6 +2102,8 @@ plperl_spi_exec(char *query, int limit)
|
|||||||
{
|
{
|
||||||
int spi_rv;
|
int spi_rv;
|
||||||
|
|
||||||
|
pg_verifymbstr(query, strlen(query), false);
|
||||||
|
|
||||||
spi_rv = SPI_execute(query, current_call_data->prodesc->fn_readonly,
|
spi_rv = SPI_execute(query, current_call_data->prodesc->fn_readonly,
|
||||||
limit);
|
limit);
|
||||||
ret_hv = plperl_spi_execute_fetch_result(SPI_tuptable, SPI_processed,
|
ret_hv = plperl_spi_execute_fetch_result(SPI_tuptable, SPI_processed,
|
||||||
@ -2343,6 +2345,9 @@ plperl_spi_query(char *query)
|
|||||||
void *plan;
|
void *plan;
|
||||||
Portal portal;
|
Portal portal;
|
||||||
|
|
||||||
|
/* Make sure the query is validly encoded */
|
||||||
|
pg_verifymbstr(query, strlen(query), false);
|
||||||
|
|
||||||
/* Create a cursor for the query */
|
/* Create a cursor for the query */
|
||||||
plan = SPI_prepare(query, 0, NULL);
|
plan = SPI_prepare(query, 0, NULL);
|
||||||
if (plan == NULL)
|
if (plan == NULL)
|
||||||
@ -2549,6 +2554,9 @@ plperl_spi_prepare(char *query, int argc, SV **argv)
|
|||||||
qdesc->argtypioparams[i] = typIOParam;
|
qdesc->argtypioparams[i] = typIOParam;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Make sure the query is validly encoded */
|
||||||
|
pg_verifymbstr(query, strlen(query), false);
|
||||||
|
|
||||||
/************************************************************
|
/************************************************************
|
||||||
* Prepare the plan and check for errors
|
* Prepare the plan and check for errors
|
||||||
************************************************************/
|
************************************************************/
|
||||||
|
Loading…
Reference in New Issue
Block a user