pgpool2.git / summary / log / commit / refs
commit 0ec00ad2b4a02e2589869ec6b3a63d64a12dd65d
Author: Tatsuo Ishii <ishii@postgresql.org>
Date: Fri Oct 17 12:09:48 2014 +0000
Fix memory leak.
Per coverity 1234602.
src/main/pgpool_main.c | 14 +++++++++++++-
1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/src/main/pgpool_main.c b/src/main/pgpool_main.c
index be24972fb..865f6ed57 100644
--- a/src/main/pgpool_main.c
+++ b/src/main/pgpool_main.c
@@ -220,6 +220,10 @@ int PgpoolMain(bool discard_status, bool clear_memcache_oidmaps)
/* create unix domain socket */
fds = malloc(sizeof(int));
+ if (fds == NULL)
+ ereport(FATAL,
+ (errmsg("failed to allocate memory in startup process")));
+
fds[0] = create_unix_domain_socket(un_addr);
on_proc_exit(FileUnlink, (Datum) un_addr.sun_path);
@@ -227,11 +231,18 @@ int PgpoolMain(bool discard_status, bool clear_memcache_oidmaps)
if (pool_config->listen_addresses[0])
{
int *inet_fds, *walk;
- inet_fds = create_inet_domain_sockets(pool_config->listen_addresses, pool_config->port);
int n = 1;
+
+ inet_fds = create_inet_domain_sockets(pool_config->listen_addresses, pool_config->port);
+
for (walk = inet_fds; *walk != -1; walk++)
n++;
+
fds = realloc(fds, sizeof(int) * (n+1));
+ if (fds == NULL)
+ ereport(FATAL,
+ (errmsg("failed to allocate memory in startup process")));
+
n = 1;
for (walk = inet_fds; *walk != -1; walk++)
{
@@ -239,6 +250,7 @@ int PgpoolMain(bool discard_status, bool clear_memcache_oidmaps)
n++;
}
fds[n] = -1;
+ free(inet_fds);
}
initialize_shared_mem_objects();
[parent: 0e48728f84da]