Skip to content

Commit 1681c11

Browse files
kayform@PostgreSQL Server
authored andcommitted
Fix suspected memory leak using by Coverity
1 parent 6b5d565 commit 1681c11

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
@@ -752,6 +752,15 @@ pgsp_shmem_startup(void)
752752
pgver != PGSP_PG_MAJOR_VERSION)
753753
goto data_error;
754754

755+
/* check if num is out of range */
756+
if (num < 0 || num > store_size)
757+
{
758+
ereport(LOG,
759+
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
760+
errmsg("Invalid number of entries in file: %d", num)));
761+
goto data_error;
762+
}
763+
755764
for (i = 0; i < num; i++)
756765
{
757766
pgspEntry temp;
@@ -944,6 +953,10 @@ pgsp_shmem_shutdown(int code, Datum arg)
944953
/* Unlink query-texts file; it's not needed while shutdown */
945954
unlink(PGSP_TEXT_FILE);
946955

956+
if (pbuffer){
957+
free(pbuffer); // or free(pbuffer)
958+
pbuffer = NULL;
959+
}
947960
return;
948961

949962
error:
@@ -954,6 +967,10 @@ pgsp_shmem_shutdown(int code, Datum arg)
954967
if (file)
955968
FreeFile(file);
956969
unlink(PGSP_DUMP_FILE ".tmp");
970+
if (pbuffer){
971+
free(pbuffer); // or free(pbuffer)
972+
pbuffer = NULL;
973+
}
957974
}
958975

959976

@@ -1726,6 +1743,11 @@ pg_store_plans_internal(FunctionCallInfo fcinfo,
17261743
}
17271744

17281745
LWLockRelease(shared_state->lock);
1746+
1747+
if (pbuffer){
1748+
free(pbuffer); // or free(pbuffer)
1749+
pbuffer = NULL;
1750+
}
17291751
}
17301752

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

0 commit comments

Comments
 (0)