Check outpout buffers in ODBC SQLGetInfo

This commit is contained in:
Nirgal Vourgère
2013-06-26 00:41:12 +02:00
parent fd6e52f9bd
commit ee1978161c

View File

@@ -1864,29 +1864,46 @@ static SQLRETURN SQL_API _SQLGetInfo(
TRACE("_SQLGetInfo"); TRACE("_SQLGetInfo");
switch (fInfoType) { switch (fInfoType) {
case SQL_MAX_STATEMENT_LEN: case SQL_MAX_STATEMENT_LEN:
*((SQLUINTEGER *)rgbInfoValue) = (SQLUINTEGER) 65000; if (rgbInfoValue)
*((SQLUINTEGER *)rgbInfoValue) = (SQLUINTEGER)65000;
if (pcbInfoValue)
*pcbInfoValue = sizeof(SQLUINTEGER); *pcbInfoValue = sizeof(SQLUINTEGER);
break; break;
case SQL_SCHEMA_USAGE: case SQL_SCHEMA_USAGE:
*((SQLSMALLINT *)rgbInfoValue) = (SQLSMALLINT) 0; if (rgbInfoValue)
*((SQLSMALLINT *)rgbInfoValue) = (SQLSMALLINT)0;
if (pcbInfoValue)
*pcbInfoValue = sizeof(SQLSMALLINT); *pcbInfoValue = sizeof(SQLSMALLINT);
break; break;
case SQL_CATALOG_NAME_SEPARATOR: case SQL_CATALOG_NAME_SEPARATOR:
memcpy(rgbInfoValue,".",1); if (rgbInfoValue)
memcpy(rgbInfoValue, ".", 1);
if (pcbInfoValue)
*pcbInfoValue = 1; *pcbInfoValue = 1;
break; break;
case SQL_CATALOG_LOCATION: case SQL_CATALOG_LOCATION:
*((SQLSMALLINT *)rgbInfoValue) = (SQLSMALLINT) 1; if (rgbInfoValue)
*((SQLSMALLINT *)rgbInfoValue) = (SQLSMALLINT)1;
if (pcbInfoValue)
*pcbInfoValue = sizeof(SQLSMALLINT); *pcbInfoValue = sizeof(SQLSMALLINT);
break; break;
case SQL_IDENTIFIER_QUOTE_CHAR: case SQL_IDENTIFIER_QUOTE_CHAR:
memcpy(rgbInfoValue,"\"",1); if (rgbInfoValue)
memcpy(rgbInfoValue, "\"", 1);
if (pcbInfoValue)
*pcbInfoValue = 1; *pcbInfoValue = 1;
break; break;
case SQL_DBMS_NAME: case SQL_DBMS_NAME:
memcpy(rgbInfoValue,"MDBTOOLS",8); if (rgbInfoValue)
*pcbInfoValue = 8; strncpy(rgbInfoValue, "MDBTOOLS", cbInfoValueMax);
if (pcbInfoValue)
*pcbInfoValue = 9;
break; break;
default:
if (pcbInfoValue)
*pcbInfoValue = 0;
strcpy(sqlState, "HYC00");
return SQL_ERROR;
} }
return SQL_SUCCESS; return SQL_SUCCESS;