Re: crash in LIBPQ_execute_query
От | Merlin Moncure |
---|---|
Тема | Re: crash in LIBPQ_execute_query |
Дата | |
Msg-id | 6EE64EF3AB31D5448D0007DD34EEB3417DD266@Herge.rcsinc.local обсуждение исходный текст |
Ответ на | crash in LIBPQ_execute_query ("Scot Loach" <sloach@sandvine.com>) |
Список | pgsql-odbc |
> 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. That code is fishy. I should be making strncpy, not strcpy, and I don't understand why ERROR_MSG_LENGTH is used for the length. The query is copied again (with strdup) inside QR_set_command. IMO, it doesn't seem worthwhile to make the extra copy just to be able to trim spaces leter. Merlin
В списке pgsql-odbc по дате отправления: