mirror of
https://github.com/postgres/postgres.git
synced 2025-12-08 00:03:14 -05:00
ecpg: Fix memory leaks in ecpg_auto_prepare()
This routines includes three code paths that can fail, with the allocated prepared statement name going out of scope. Per report from Coverity. Oversight in commit a6eabec6808c, that has played with the order of some ecpg_strdup() calls in this code path.
This commit is contained in:
parent
793928c2d5
commit
3151c264d4
@ -603,7 +603,10 @@ ecpg_auto_prepare(int lineno, const char *connection_name, const int compat, cha
|
||||
prep = ecpg_find_prepared_statement(stmtID, con, NULL);
|
||||
/* This prepared name doesn't exist on this connection. */
|
||||
if (!prep && !prepare_common(lineno, con, stmtID, query))
|
||||
{
|
||||
ecpg_free(*name);
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
@ -619,11 +622,17 @@ ecpg_auto_prepare(int lineno, const char *connection_name, const int compat, cha
|
||||
return false;
|
||||
|
||||
if (!ECPGprepare(lineno, connection_name, 0, stmtID, query))
|
||||
{
|
||||
ecpg_free(*name);
|
||||
return false;
|
||||
}
|
||||
|
||||
entNo = AddStmtToCache(lineno, stmtID, connection_name, compat, query);
|
||||
if (entNo < 0)
|
||||
{
|
||||
ecpg_free(*name);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/* increase usage counter */
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user