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]