ODBC: SQLGetDescField returns incorrect length for SQL_DESC_COUNT field of APD
<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">https://git.postgresql.org/gitweb/?p=psqlodbc.git;a=blob;f=pgapi30.c;h=ba0dd6d731bbccd81392def43ae9b10e9c013aef;hb=HEAD#l1240</a><br>
<br>
Just replace 'ret = SQL_IS_SMALLINT;' with 'rettype =
SQL_IS_SMALLINT;'.<br>
</font>
</body>
</html>
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#l1240Just 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 +