mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-10-01 16:01:23 +02:00
Made ECPG more robust against applications freeing strings, based on
patch send in by Boszormenyi Zoltan <zb@cybertec.at>.
This commit is contained in:
parent
314288fc04
commit
d9623859e8
@ -2438,6 +2438,11 @@ Thu, 01 Oct 2009 19:31:57 +0200
|
||||
|
||||
- Applied patch by Boszormenyi Zoltan <zb@cybertec.at> to fix memory
|
||||
leak in decimal handling.
|
||||
|
||||
Thu, 15 Oct 2009 12:15:31 +0200
|
||||
|
||||
- Made ECPG more robust against applications freeing strings, based on
|
||||
patch send in by Boszormenyi Zoltan <zb@cybertec.at>.
|
||||
- Set ecpg library version to 6.2.
|
||||
- Set compat library version to 3.2.
|
||||
- Set ecpg version to 4.6.
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/prepare.c,v 1.32 2009/07/22 11:07:02 mha Exp $ */
|
||||
/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/prepare.c,v 1.33 2009/10/15 10:20:15 meskes Exp $ */
|
||||
|
||||
#define POSTGRES_ECPG_INTERNAL
|
||||
#include "postgres_fe.h"
|
||||
@ -152,7 +152,7 @@ ECPGprepare(int lineno, const char *connection_name, const bool questionmarks, c
|
||||
replace_variables(&(stmt->command), lineno);
|
||||
|
||||
/* add prepared statement to our list */
|
||||
this->name = (char *) name;
|
||||
this->name = ecpg_strdup(name, lineno);
|
||||
this->stmt = stmt;
|
||||
|
||||
/* and finally really prepare the statement */
|
||||
@ -160,6 +160,7 @@ ECPGprepare(int lineno, const char *connection_name, const bool questionmarks, c
|
||||
if (!ecpg_check_PQresult(query, stmt->lineno, stmt->connection->connection, stmt->compat))
|
||||
{
|
||||
ecpg_free(stmt->command);
|
||||
ecpg_free(this->name);
|
||||
ecpg_free(this);
|
||||
ecpg_free(stmt);
|
||||
return false;
|
||||
@ -238,6 +239,7 @@ deallocate_one(int lineno, enum COMPAT_MODE c, struct connection * con, struct p
|
||||
/* okay, free all the resources */
|
||||
ecpg_free(this->stmt->command);
|
||||
ecpg_free(this->stmt);
|
||||
ecpg_free(this->name);
|
||||
if (prev != NULL)
|
||||
prev->next = this->next;
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user