Re: Memory leak in receivelog.c when receiving stream
От | Heikki Linnakangas |
---|---|
Тема | Re: Memory leak in receivelog.c when receiving stream |
Дата | |
Msg-id | 54B4DB2A.2000104@vmware.com обсуждение исходный текст |
Ответ на | Memory leak in receivelog.c when receiving stream (Michael Paquier <michael.paquier@gmail.com>) |
Ответы |
Re: Memory leak in receivelog.c when receiving stream
|
Список | 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 по дате отправления: