Re: CC_send_query_append crash

From: Malcolm MacLeod <malcolm(dot)macleod(at)tshwanedje(dot)com>
To: Michael Paquier <michael(dot)paquier(at)gmail(dot)com>
Cc: PostgreSQL mailing lists <pgsql-odbc(at)postgresql(dot)org>
Subject: Re: CC_send_query_append crash
Date: 2014-05-01 11:47:36
Message-ID: 1398944856.4578.51.camel@watchmen.homenetwork
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-odbc


> <malcolm(dot)macleod(at)tshwanedje(dot)com> wrote:
> > The crash seems to occur because CC_send_query_append crash takes a
> > local copy of the pointer 'self->sock' at the top of the function,
> > 'self' is then passed around to various functions (some of which have
> > the side effect of setting self->sock to NULL (and deleting) if there is
> > a lost connection) and then the local copy of the pointer (which is now
> > dangling) is dereferenced lower down in the function.
> > Essentially if there is a disconnect while CC_send_query_append is
> > running there is a risk of crash.
> Looking at the code, I am seeing that the problem is related to
> CC_on_abort where conn->sock is set to NULL when the connection is
> considered as dead. And I am indeed seeing two code paths (when
> sending the 'C' message there is an ABORT check and in cleanup
> section) that could use this NULL socket afterwards. Your patch is
> perhaps a bit too much. So I am proposing the attached patch instead.
> Let me know if this fixes your issue as well.

Thanks for the fast response!
Your proposed patch would also fix the issue, so I have no problem with
it being used instead.

I guess from my side I just don't personally understand the point of
keeping the local pointer copy at all (it just seems like an invitation
for this sort of thing to occur) - so it made more sense to me to remove
it entirely to prevent future occurrences of similar issues - although I
suppose also the less code disturbed the better. I am not overly
familiar with the code so can't say what is best.

Thanks,
Malcolm

In response to

Responses

Browse pgsql-odbc by date

  From Date Subject
Next Message Pierre Couderc 2014-05-02 15:29:25 Re: Transcoding problem with wine and unixodbc
Previous Message Michael Paquier 2014-05-01 03:18:00 Re: CC_send_query_append crash