ODBC: SQLGetDescField returns incorrect length for SQL_DESC_COUNT field of APD

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

ODBC: SQLGetDescField returns incorrect length for SQL_DESC_COUNT field of APD

Werewolf
Field SQL_DESC_COUNT should fit into a variable of type SQLSMALLINT. But when retrieving this field of APD SQLGetDescField returns SQLINTEGER value. So memory corruption is possible in application using psqlodbc driver.
Also the function returns an undefined error code -8.

The mistake is located here
https://git.postgresql.org/gitweb/?p=psqlodbc.git;a=blob;f=pgapi30.c;h=ba0dd6d731bbccd81392def43ae9b10e9c013aef;hb=HEAD#l1240

Just replace 'ret = SQL_IS_SMALLINT;' with 'rettype = SQL_IS_SMALLINT;'.
Reply | Threaded
Open this post in threaded view
|

Re: ODBC: SQLGetDescField returns incorrect length for SQL_DESC_COUNT field of APD

Bruce Momjian
On Tue, Jun 18, 2019 at 10:31:17PM +0300, Werewolf wrote:

> Field SQL_DESC_COUNT should fit into a variable of type SQLSMALLINT. But when
> retrieving this field of APD SQLGetDescField returns SQLINTEGER value. So
> memory corruption is possible in application using psqlodbc driver.
> Also the function returns an undefined error code -8.
>
> The mistake is located here
> https://git.postgresql.org/gitweb/?p=psqlodbc.git;a=blob;f=pgapi30.c;h=
> ba0dd6d731bbccd81392def43ae9b10e9c013aef;hb=HEAD#l1240
>
> Just replace 'ret = SQL_IS_SMALLINT;' with 'rettype = SQL_IS_SMALLINT;'.

I suggest you report this to the ODB  project at
[hidden email].  See:

        https://odbc.postgresql.org/faq.html#1.6

--
  Bruce Momjian  <[hidden email]>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

+ As you are, so once was I.  As I am, so you will be. +
+                      Ancient Roman grave inscription +