odbccp32: Fix SQLInstallDriverManager{,W}.
This commit is contained in:
parent
6d20893b1e
commit
b234bb49ff
@ -522,9 +522,13 @@ BOOL WINAPI SQLInstallDriverManagerW(LPWSTR lpszPath, WORD cbPathMax,
|
|||||||
UINT len;
|
UINT len;
|
||||||
WCHAR path[MAX_PATH];
|
WCHAR path[MAX_PATH];
|
||||||
|
|
||||||
clear_errors();
|
|
||||||
TRACE("(%p %d %p)\n", lpszPath, cbPathMax, pcbPathOut);
|
TRACE("(%p %d %p)\n", lpszPath, cbPathMax, pcbPathOut);
|
||||||
|
|
||||||
|
if (cbPathMax < MAX_PATH)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
clear_errors();
|
||||||
|
|
||||||
len = GetSystemDirectoryW(path, MAX_PATH);
|
len = GetSystemDirectoryW(path, MAX_PATH);
|
||||||
|
|
||||||
if (pcbPathOut)
|
if (pcbPathOut)
|
||||||
@ -545,9 +549,13 @@ BOOL WINAPI SQLInstallDriverManager(LPSTR lpszPath, WORD cbPathMax,
|
|||||||
WORD len, cbOut = 0;
|
WORD len, cbOut = 0;
|
||||||
WCHAR path[MAX_PATH];
|
WCHAR path[MAX_PATH];
|
||||||
|
|
||||||
clear_errors();
|
|
||||||
TRACE("(%p %d %p)\n", lpszPath, cbPathMax, pcbPathOut);
|
TRACE("(%p %d %p)\n", lpszPath, cbPathMax, pcbPathOut);
|
||||||
|
|
||||||
|
if (cbPathMax < MAX_PATH)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
clear_errors();
|
||||||
|
|
||||||
ret = SQLInstallDriverManagerW(path, MAX_PATH, &cbOut);
|
ret = SQLInstallDriverManagerW(path, MAX_PATH, &cbOut);
|
||||||
if (ret)
|
if (ret)
|
||||||
{
|
{
|
||||||
|
@ -86,28 +86,23 @@ static void test_SQLInstallDriverManager(void)
|
|||||||
bool_ret = SQLInstallDriverManager(NULL, 0, NULL);
|
bool_ret = SQLInstallDriverManager(NULL, 0, NULL);
|
||||||
sql_ret = SQLInstallerErrorW(1, &error_code, NULL, 0, NULL);
|
sql_ret = SQLInstallerErrorW(1, &error_code, NULL, 0, NULL);
|
||||||
ok(!bool_ret, "SQLInstallDriverManager unexpectedly succeeded\n");
|
ok(!bool_ret, "SQLInstallDriverManager unexpectedly succeeded\n");
|
||||||
todo_wine
|
|
||||||
ok(sql_ret == SQL_SUCCESS_WITH_INFO && error_code == ODBC_ERROR_INVALID_BUFF_LEN,
|
ok(sql_ret == SQL_SUCCESS_WITH_INFO && error_code == ODBC_ERROR_INVALID_BUFF_LEN,
|
||||||
"Expected SQLInstallDriverManager to fail with ODBC_ERROR_INVALID_BUFF_LEN\n");
|
"Expected SQLInstallDriverManager to fail with ODBC_ERROR_INVALID_BUFF_LEN\n");
|
||||||
|
|
||||||
/* Length smaller than MAX_PATH */
|
/* Length smaller than MAX_PATH */
|
||||||
bool_ret = SQLInstallDriverManager(target_path, MAX_PATH / 2, NULL);
|
bool_ret = SQLInstallDriverManager(target_path, MAX_PATH / 2, NULL);
|
||||||
sql_ret = SQLInstallerErrorW(1, &error_code, NULL, 0, NULL);
|
sql_ret = SQLInstallerErrorW(1, &error_code, NULL, 0, NULL);
|
||||||
todo_wine {
|
|
||||||
ok(!bool_ret, "SQLInstallDriverManager unexpectedly succeeded\n");
|
ok(!bool_ret, "SQLInstallDriverManager unexpectedly succeeded\n");
|
||||||
ok(sql_ret == SQL_SUCCESS_WITH_INFO && error_code == ODBC_ERROR_INVALID_BUFF_LEN,
|
ok(sql_ret == SQL_SUCCESS_WITH_INFO && error_code == ODBC_ERROR_INVALID_BUFF_LEN,
|
||||||
"Expected SQLInstallDriverManager to fail with ODBC_ERROR_INVALID_BUFF_LEN\n");
|
"Expected SQLInstallDriverManager to fail with ODBC_ERROR_INVALID_BUFF_LEN\n");
|
||||||
}
|
|
||||||
|
|
||||||
path_out = 0xcafe;
|
path_out = 0xcafe;
|
||||||
bool_ret = SQLInstallDriverManager(target_path, MAX_PATH / 2, &path_out);
|
bool_ret = SQLInstallDriverManager(target_path, MAX_PATH / 2, &path_out);
|
||||||
sql_ret = SQLInstallerErrorW(1, &error_code, NULL, 0, NULL);
|
sql_ret = SQLInstallerErrorW(1, &error_code, NULL, 0, NULL);
|
||||||
todo_wine {
|
|
||||||
ok(!bool_ret, "SQLInstallDriverManager unexpectedly succeeded\n");
|
ok(!bool_ret, "SQLInstallDriverManager unexpectedly succeeded\n");
|
||||||
ok(sql_ret == SQL_SUCCESS_WITH_INFO && error_code == ODBC_ERROR_INVALID_BUFF_LEN,
|
ok(sql_ret == SQL_SUCCESS_WITH_INFO && error_code == ODBC_ERROR_INVALID_BUFF_LEN,
|
||||||
"Expected SQLInstallDriverManager to fail with ODBC_ERROR_INVALID_BUFF_LEN\n");
|
"Expected SQLInstallDriverManager to fail with ODBC_ERROR_INVALID_BUFF_LEN\n");
|
||||||
ok(path_out == 0xcafe, "Expected path_out to not have changed\n");
|
ok(path_out == 0xcafe, "Expected path_out to not have changed\n");
|
||||||
}
|
|
||||||
|
|
||||||
/* Length OK */
|
/* Length OK */
|
||||||
bool_ret = SQLInstallDriverManager(target_path, MAX_PATH, NULL);
|
bool_ret = SQLInstallDriverManager(target_path, MAX_PATH, NULL);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user