mirror of
https://github.com/mdbtools/mdbtools.git
synced 2025-09-20 02:57:55 +08:00
Check outpout buffers in ODBC SQLGetInfo
This commit is contained in:
@@ -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;
|
||||||
|
Reference in New Issue
Block a user