Re: crash in LIBPQ_execute_query
От | Dave Page |
---|---|
Тема | Re: crash in LIBPQ_execute_query |
Дата | |
Msg-id | E7F85A1B5FF8D44C8A1AF6885BC9A0E4AC9E2A@ratbert.vale-housing.co.uk обсуждение исходный текст |
Ответ на | crash in LIBPQ_execute_query ("Scot Loach" <sloach@sandvine.com>) |
Список | pgsql-odbc |
> -----Original Message----- > From: pgsql-odbc-owner@postgresql.org > [mailto:pgsql-odbc-owner@postgresql.org] On Behalf Of Scot Loach > Sent: 02 September 2005 13:12 > To: pgsql-odbc@postgresql.org > Subject: [ODBC] crash in LIBPQ_execute_query > > Some of the queries we use can be very large. > My code is crashing here: > > QResultClass * > LIBPQ_execute_query(ConnectionClass *self,char *query) > { > QResultClass *qres; > PGresult *pgres; > char *ptr; > char cmdbuffer[ERROR_MSG_LENGTH + 1]; > char errbuffer[ERROR_MSG_LENGTH + 1]; > int pos=0; > > strcpy(cmdbuffer,query); > > > ERROR_MSG_LENGTH is 4096, my query is larger than that. > What's the rationale here and how do we fix it? This works > fine with the old driver. Urgh. To be honest, I can't see any need to copy that string at all in there, so the limit is entirely unwarranted. In addition, there's code in there marked #ifndef USE_LIBPQ (in LIBPQ_Execute!!), and, it sets the rowcount to -1 if it can't find a space in the SQL query! I've tidied that up - patch attached. Please let me know how it goes. Regards, Dave
Вложения
В списке pgsql-odbc по дате отправления: