Re: Patch to solve memory protect violation and clear __error_numberafter call CC_lookup_characterset
От | Inoue, Hiroshi |
---|---|
Тема | Re: Patch to solve memory protect violation and clear __error_numberafter call CC_lookup_characterset |
Дата | |
Msg-id | 152bdf12-5700-e640-3c75-eea299631129@dream.email.ne.jp обсуждение исходный текст |
Ответ на | Patch to solve memory protect violation and clear __error_numberafter call CC_lookup_characterset (martial.guex@mutech.ch) |
Список | pgsql-odbc |
Hello Martial, The bugs were fixed in version 9.06.0500. Please try the latest version(12.01.0000). regards, Hiroshi Inoue On 2020/03/22 22:43, martial.guex@mutech.ch wrote: > Hello, > > I have detected fatal memory error protection on call strdup > connectio.c(1045) and wrong setting conn.__error_number on > CC_lookup_lo when "select oid, typbasetype from pg_type where typname > = 'lo'" doesn't return any record. > > I used this patch to solve the problem on debian stretch with > odbc-postgresql:amd64 version 1:09.05.0400-2. > > --- psqlodbc-09.05.0400.orig/connection.c > +++ psqlodbc-09.05.0400/connection.c > @@ -1041,12 +1041,13 @@ CC_connect(ConnectionClass *self, char * > if (retsend) > retsend = CC_send_settings(self, > GET_NAME(self->connInfo.conn_settings)); > > - if (CC_get_errornumber(self) > 0) > + if ((CC_get_errornumber(self) > 0) && (CC_get_errormsg(self) != > NULL)) > saverr = strdup(CC_get_errormsg(self)); > CC_clear_error(self); /* clear any error */ > CC_lookup_lo(self); /* a hack to get the oid of > our large object oid type */ > > + CC_clear_error(self); /* clear any error */ > /* Multibyte handling */ > CC_lookup_characterset(self); > if (CC_get_errornumber(self) > 0) > > It's probably better to clear self.__error_number directly on > CC_lookup_lo and when error_number is equal 110. > > Thank's for the job.
В списке pgsql-odbc по дате отправления: