diff --git a/dlls/msi/msiquery.c b/dlls/msi/msiquery.c index df81a74822..c603e6a5ea 100644 --- a/dlls/msi/msiquery.c +++ b/dlls/msi/msiquery.c @@ -901,6 +901,9 @@ UINT MSI_DatabaseGetPrimaryKeys( MSIDATABASE *db, MSIQUERY *query = NULL; UINT r; + if (!TABLE_Exists( db, table )) + return ERROR_INVALID_TABLE; + r = MSI_OpenQuery( db, &query, sql, table ); if( r != ERROR_SUCCESS ) return r; diff --git a/dlls/msi/tests/record.c b/dlls/msi/tests/record.c index 0b80779721..2de43cb053 100644 --- a/dlls/msi/tests/record.c +++ b/dlls/msi/tests/record.c @@ -589,6 +589,9 @@ static void test_fieldzero(void) MsiCloseHandle(rec); + r = MsiDatabaseGetPrimaryKeysA(hdb, "nosuchtable", &rec); + ok(r == ERROR_INVALID_TABLE, "Expected ERROR_INVALID_TABLE, got %d\n", r); + query = "SELECT * FROM `drone` WHERE `id` = 1"; r = MsiDatabaseOpenView(hdb, query, &hview); ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);