Skip to content

Commit fb41a58

Browse files
author
kayform@
committed
Fix suspected memory leak using by Coverity
1 parent e92e7c9 commit fb41a58

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

pg_store_plans.c

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -738,6 +738,15 @@ pgsp_shmem_startup(void)
738738
pgver != PGSP_PG_MAJOR_VERSION)
739739
goto data_error;
740740

741+
/* check if num is out of range */
742+
if (num < 0 || num > store_size)
743+
{
744+
ereport(LOG,
745+
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
746+
errmsg("Invalid number of entries in file: %d", num)));
747+
goto data_error;
748+
}
749+
741750
for (i = 0; i < num; i++)
742751
{
743752
pgspEntry temp;
@@ -930,6 +939,10 @@ pgsp_shmem_shutdown(int code, Datum arg)
930939
/* Unlink query-texts file; it's not needed while shutdown */
931940
unlink(PGSP_TEXT_FILE);
932941

942+
if (pbuffer){
943+
free(pbuffer); // or free(pbuffer)
944+
pbuffer = NULL;
945+
}
933946
return;
934947

935948
error:
@@ -940,6 +953,10 @@ pgsp_shmem_shutdown(int code, Datum arg)
940953
if (file)
941954
FreeFile(file);
942955
unlink(PGSP_DUMP_FILE ".tmp");
956+
if (pbuffer){
957+
free(pbuffer); // or free(pbuffer)
958+
pbuffer = NULL;
959+
}
943960
}
944961

945962

@@ -1685,6 +1702,11 @@ pg_store_plans_internal(FunctionCallInfo fcinfo,
16851702

16861703
/* clean up and return the tuplestore */
16871704
tuplestore_donestoring(tupstore);
1705+
1706+
if (pbuffer){
1707+
free(pbuffer); // or free(pbuffer)
1708+
pbuffer = NULL;
1709+
}
16881710
}
16891711

16901712
/* Number of output arguments (columns) for pg_stat_statements_info */

0 commit comments

Comments
 (0)