Re: Memory leak in receivelog.c when receiving stream - Mailing list pgsql-hackers

From Heikki Linnakangas
Subject Re: Memory leak in receivelog.c when receiving stream
Date
Msg-id 54B4DB2A.2000104@vmware.com
Whole thread Raw
In response to Memory leak in receivelog.c when receiving stream  (Michael Paquier <michael.paquier@gmail.com>)
Responses Re: Memory leak in receivelog.c when receiving stream
List pgsql-hackers
On 01/13/2015 10:18 AM, Michael Paquier wrote:
> receivelog.c is leaking memory in CopyStreamReceive when receiving COPY data.
> The issue has been spotted by coverity. The patch attached fixes the
> problem, and contains as well improved comments.
>
> *** a/src/bin/pg_basebackup/receivelog.c
> --- b/src/bin/pg_basebackup/receivelog.c
> ***************
> *** 1035,1046 **** CopyStreamReceive(PGconn *conn, long timeout, char **buffer)
>           if (rawlen == 0)
>               return 0;
>       }
> !     if (rawlen == -1)            /* end-of-streaming or error */
>           return -2;
>       if (rawlen == -2)
>       {
>           fprintf(stderr, _("%s: could not read COPY data: %s"),
>                   progname, PQerrorMessage(conn));
>           return -1;
>       }
>
> --- 1035,1056 ----
>           if (rawlen == 0)
>               return 0;
>       }
> !
> !     /* end-of-streaming or error */
> !     if (rawlen == -1)
> !     {
> !         if (copybuf != NULL)
> !             PQfreemem(copybuf);
>           return -2;
> +     }
> +
> +     /* failure when reading copy stream */
>       if (rawlen == -2)
>       {
>           fprintf(stderr, _("%s: could not read COPY data: %s"),
>                   progname, PQerrorMessage(conn));
> +         if (copybuf != NULL)
> +             PQfreemem(copybuf);
>           return -1;
>       }

This looks like a false positive to me. PQgetCopyData() will only return 
a buffer if its return value is > 0

- Heikki




pgsql-hackers by date:

Previous
From: Heikki Linnakangas
Date:
Subject: Re: Unused variables in hstore_to_jsonb
Next
From: Vladimir Borodin
Date:
Subject: Re: Check that streaming replica received all data after master shutdown