ODBC: SQLGetDescField returns incorrect length for SQL_DESC_COUNT field of APD

Started by Werewolfalmost 7 years ago2 messagesbugs
Jump to latest
#1Werewolf
werewolfff@yandex.ru

<html>
<head>

<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<font face="Helvetica, Arial, sans-serif">Field SQL_DESC_COUNT
should fit into a variable of type SQLSMALLINT. But when </font><font
face="Helvetica, Arial, sans-serif"><span class="tlid-translation
translation" lang="en">retrieving this field of APD </span>SQLGetDescField
returns SQLINTEGER value. So memory corruption is possible in
application using psqlodbc driver.<br>
Also the function returns an undefined error code -8.<br>
<br>
The mistake is located here<br>
<a class="moz-txt-link-freetext" href="https://git.postgresql.org/gitweb/?p=psqlodbc.git;a=blob;f=pgapi30.c;h=ba0dd6d731bbccd81392def43ae9b10e9c013aef;hb=HEAD#l1240&quot;&gt;https://git.postgresql.org/gitweb/?p=psqlodbc.git;a=blob;f=pgapi30.c;h=ba0dd6d731bbccd81392def43ae9b10e9c013aef;hb=HEAD#l1240&lt;/a&gt;&lt;br&gt;
<br>
Just replace 'ret = SQL_IS_SMALLINT;' with 'rettype =
SQL_IS_SMALLINT;'.<br>
</font>
</body>
</html>

#2Bruce Momjian
bruce@momjian.us
In reply to: Werewolf (#1)
Re: ODBC: SQLGetDescField returns incorrect length for SQL_DESC_COUNT field of APD

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
pgsql-odbc@postgresql.org. See:

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

--
Bruce Momjian <bruce@momjian.us> 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 +