Unix Technical Forum

SQLGetInfo buffer overflow?

This is a discussion on SQLGetInfo buffer overflow? within the pgsql Interfaces odbc forums, part of the PostgreSQL category; --> Anyone have a comment on https://bugzilla.redhat.com/bugzilla....cgi?id=178925 regards, tom lane ---------------------------(end of broadcast)--------------------------- TIP 1: if posting/reading through Usenet, please ...


Go Back   Unix Technical Forum > Database Server Software > PostgreSQL > pgsql Interfaces odbc

FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 04-16-2008, 02:48 AM
Tom Lane
 
Posts: n/a
Default SQLGetInfo buffer overflow?

Anyone have a comment on
https://bugzilla.redhat.com/bugzilla....cgi?id=178925

regards, tom lane

---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to majordomo@postgresql.org so that your
message can get through to the mailing list cleanly

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #2 (permalink)  
Old 04-16-2008, 02:48 AM
Ludek Finstrle
 
Posts: n/a
Default Re: SQLGetInfo buffer overflow?

Wed, Jan 25, 2006 at 11:52:13AM -0500, Tom Lane napsal(a):
> Anyone have a comment on
> https://bugzilla.redhat.com/bugzilla....cgi?id=178925


I see no problem without Unicode support. I'm not sure with unicode version.

RETCODE SQL_API PGAPI_GetInfo(
HDBC hdbc,
UWORD fInfoType, // 18
PTR rgbInfoValue, // output buffer
SWORD cbInfoValueMax, // size of output buffer
SWORD FAR * pcbInfoValue) // returned length
{
char *p = NULL,
tmp[MAX_INFO_STRING];
int len = 0;

....

switch (fInfoType)
case SQL_DBMS_VER:
snprintf(tmp, sizeof(tmp) - 1, "%s %s", POSTGRESDRIVERVERSION, conn->pg_version);
tmp[sizeof(tmp) - 1] = '\0';
p = tmp;
break;

....

result = SQL_SUCCESS;

if (p) {
len = strlen(p);
#ifdef UNICODE_SUPPORT
if (conn->unicode)
len = len * WCLEN;
#endif
if (rgbInfoValue) {
#ifdef UNICODE_SUPPORT
if (conn->unicode)
len = utf8_to_ucs2(p, len, (SQLWCHAR *) rgbInfoValue, cbInfoValueMax / 2);
else
#endif
strncpy_null((char *) rgbInfoValue, p, (size_t) cbInfoValueMax);

if (len >= cbInfoValueMax) {
result = SQL_SUCCESS_WITH_INFO;
CC_set_error(conn, CONN_TRUNCATED, "The buffer was too small for the InfoValue.");
}
}
}

....

if (pcbInfoValue)
*pcbInfoValue = len;

mylog("%s: p='%s', len=%d, value=%d, cbMax=%d\n", func, p ? p : "<NULL>", len, value, cbInfoValueMax);

return result;
}

I have no time for this issue until next week. The code is located
in info.c.

Regards,

Luf

---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to majordomo@postgresql.org so that your
message can get through to the mailing list cleanly

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #3 (permalink)  
Old 04-16-2008, 02:48 AM
Przemyslaw Slupkowski
 
Posts: n/a
Default unsubscribe

unsubscribe

---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #4 (permalink)  
Old 04-16-2008, 02:48 AM
Ludek Finstrle
 
Posts: n/a
Default Re: SQLGetInfo buffer overflow?

Wed, Jan 25, 2006 at 06:16:22PM +0100, Ludek Finstrle napsal(a):
> Wed, Jan 25, 2006 at 11:52:13AM -0500, Tom Lane napsal(a):
> > Anyone have a comment on
> > https://bugzilla.redhat.com/bugzilla....cgi?id=178925

>
> I see no problem without Unicode support. I'm not sure with unicode version.


I test unicode driver 08.01.0106 on CentOS 4.2 x86_64 without such problem.
I have no Fedora 4 x86_64 to test it.

Perl code to test (it needs DBD::ODBC):

use DBI;

my $dbh = DBI->connect('dbi:ODBC:<DSN>','username','password') ;
print $dbh->func(18, GetInfo);
$dbh->disconnect;

Could someone test it with Fedora 4 on x86_64?

Thanks,

Luf

---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
  #5 (permalink)  
Old 04-16-2008, 02:49 AM
Tom Lane
 
Posts: n/a
Default Re: SQLGetInfo buffer overflow?

Ludek Finstrle <luf@pzkagis.cz> writes:
> Wed, Jan 25, 2006 at 06:16:22PM +0100, Ludek Finstrle napsal(a):
>> Wed, Jan 25, 2006 at 11:52:13AM -0500, Tom Lane napsal(a):
>>> Anyone have a comment on
>>> https://bugzilla.redhat.com/bugzilla....cgi?id=178925

>>
>> I see no problem without Unicode support. I'm not sure with unicode version.

> I test unicode driver 08.01.0106 on CentOS 4.2 x86_64 without such problem.


Argh, false alarm: the reporter was *not* using psqlodbc, he was using
the ancient and unmaintained version embedded in the unixODBC package.
That predates the bug fix applied here:
http://cvs.pgfoundry.org/cgi-bin/cvs...1=1.89&r2=1.90

Sorry for the noise.

regards, tom lane

---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster

Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump


All times are GMT. The time now is 01:03 AM.


Powered by vBulletin® Version 3.6.5
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.2.0
www.UnixAdminTalk.com