Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit986cdb9

Browse files
authored
Prevent connections to SQL 7.0 & 2000 (#2839)
1 parent44cfedd commit986cdb9

File tree

4 files changed

+58
-23
lines changed

4 files changed

+58
-23
lines changed

‎src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/TdsParser.cs

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3988,25 +3988,6 @@ private TdsOperationStatus TryProcessLoginAck(TdsParserStateObject stateObj, out
39883988
// information provided by S. Ashwin
39893989
switch (majorMinor)
39903990
{
3991-
case TdsEnums.SQL70OR2000_MAJOR << 24 | TdsEnums.DEFAULT_MINOR: // 7.0 & 2000 RTM
3992-
// note that 7.0 and 2000 can only be distinguished by the increment
3993-
switch (increment)
3994-
{
3995-
case TdsEnums.SQL2000_INCREMENT:
3996-
_is2000 = true;
3997-
break;
3998-
case TdsEnums.SQL70_INCREMENT:
3999-
// no flag will be set
4000-
break;
4001-
default:
4002-
throw SQL.InvalidTDSVersion();
4003-
}
4004-
break;
4005-
case TdsEnums.SQL2000SP1_MAJOR << 24 | TdsEnums.SQL2000SP1_MINOR: // 2000 SP1
4006-
if (increment != TdsEnums.SQL2000SP1_INCREMENT)
4007-
{ throw SQL.InvalidTDSVersion(); }
4008-
_is2000SP1 = true;
4009-
break;
40103991
case TdsEnums.SQL2005_MAJOR << 24 | TdsEnums.SQL2005_RTM_MINOR: // 2005
40113992
if (increment != TdsEnums.SQL2005_INCREMENT)
40123993
{

‎src/Microsoft.Data.SqlClient/tests/FunctionalTests/SqlConnectionBasicTests.cs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -492,5 +492,37 @@ public void ConnectionTestAccessTokenCallbackCombinations()
492492
});
493493
}
494494
}
495+
496+
[Theory]
497+
[InlineData(9,0,2047)]// SQL Server 2005
498+
[InlineData(10,0,2531)]// SQL Server 2008
499+
[InlineData(10,50,2500)]// SQL Server 2008 R2
500+
[InlineData(11,0,3000)]// SQL Server 2012-2022
501+
publicvoidConnectionTestPermittedVersion(intmajor,intminor,intbuild)
502+
{
503+
VersionsimulatedServerVersion=newVersion(major,minor,build);
504+
usingTestTdsServerserver=TestTdsServer.StartTestServer(serverVersion:simulatedServerVersion);
505+
usingSqlConnectionconn=newSqlConnection(server.ConnectionString);
506+
507+
conn.Open();
508+
Assert.Equal(ConnectionState.Open,conn.State);
509+
510+
VersionreturnedServerVersion=Version.Parse(conn.ServerVersion);
511+
512+
Assert.Equal(simulatedServerVersion,returnedServerVersion);
513+
}
514+
515+
[Theory]
516+
[InlineData(7,0,623)]// SQL Server 7.0
517+
[InlineData(8,0,194)]// SQL Server 2000 RTM
518+
[InlineData(8,0,384)]// SQL Server 2000 SP1
519+
publicvoidConnectionTestDeniedVersion(intmajor,intminor,intbuild)
520+
{
521+
VersionsimulatedServerVersion=newVersion(major,minor,build);
522+
usingTestTdsServerserver=TestTdsServer.StartTestServer(serverVersion:simulatedServerVersion);
523+
usingSqlConnectionconn=newSqlConnection(server.ConnectionString);
524+
525+
Assert.Throws<InvalidOperationException>(()=>conn.Open());
526+
}
495527
}
496528
}

‎src/Microsoft.Data.SqlClient/tests/FunctionalTests/TestTdsServer.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public TestTdsServer(QueryEngine engine, TDSServerArguments args) : base(args)
2525
Engine=engine;
2626
}
2727

28-
publicstaticTestTdsServerStartServerWithQueryEngine(QueryEngineengine,boolenableFedAuth=false,boolenableLog=false,intconnectionTimeout=DefaultConnectionTimeout,boolexcludeEncryption=false,[CallerMemberName]stringmethodName="")
28+
publicstaticTestTdsServerStartServerWithQueryEngine(QueryEngineengine,boolenableFedAuth=false,boolenableLog=false,intconnectionTimeout=DefaultConnectionTimeout,boolexcludeEncryption=false,VersionserverVersion=null,[CallerMemberName]stringmethodName="")
2929
{
3030
TDSServerArgumentsargs=newTDSServerArguments()
3131
{
@@ -40,6 +40,10 @@ public static TestTdsServer StartServerWithQueryEngine(QueryEngine engine, bool
4040
{
4141
args.Encryption=SqlServer.TDS.PreLogin.TDSPreLoginTokenEncryptionType.None;
4242
}
43+
if(serverVersion!=null)
44+
{
45+
args.ServerVersion=serverVersion;
46+
}
4347

4448
TestTdsServerserver=engine==null?newTestTdsServer(args):newTestTdsServer(engine,args);
4549
server._endpoint=newTDSServerEndPoint(server){ServerEndPoint=newIPEndPoint(IPAddress.Any,0)};
@@ -58,9 +62,9 @@ public static TestTdsServer StartServerWithQueryEngine(QueryEngine engine, bool
5862
returnserver;
5963
}
6064

61-
publicstaticTestTdsServerStartTestServer(boolenableFedAuth=false,boolenableLog=false,intconnectionTimeout=DefaultConnectionTimeout,boolexcludeEncryption=false,[CallerMemberName]stringmethodName="")
65+
publicstaticTestTdsServerStartTestServer(boolenableFedAuth=false,boolenableLog=false,intconnectionTimeout=DefaultConnectionTimeout,boolexcludeEncryption=false,VersionserverVersion=null,[CallerMemberName]stringmethodName="")
6266
{
63-
returnStartServerWithQueryEngine(null,enableFedAuth,enableLog,connectionTimeout,excludeEncryption,methodName);
67+
returnStartServerWithQueryEngine(null,enableFedAuth,enableLog,connectionTimeout,excludeEncryption,serverVersion,methodName);
6468
}
6569

6670
publicvoidDispose()=>_endpoint?.Stop();

‎src/Microsoft.Data.SqlClient/tests/tools/TDS/TDS/TDSVersion.cs

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,16 @@ namespace Microsoft.SqlServer.TDS
1111
/// </summary>
1212
publicstaticclassTDSVersion
1313
{
14+
/// <summary>
15+
/// 7.0 (Sphinx) TDS version
16+
/// </summary>
17+
publicstaticVersionSqlServer7_0=newVersion(7,0,0,0);
18+
19+
/// <summary>
20+
/// 2000 (Shiloh) TDS version
21+
/// </summary>
22+
publicstaticVersionSqlServer2000=newVersion(7,1,0,1);
23+
1424
/// <summary>
1525
/// 2005 (Yukon) TDS version
1626
/// </summary>
@@ -46,6 +56,14 @@ public static Version GetTDSVersion(Version buildVersion)
4656
{
4757
returnSqlServer2005;
4858
}
59+
elseif(buildVersion.Major==8)
60+
{
61+
returnSqlServer2000;
62+
}
63+
elseif(buildVersion.Major==7)
64+
{
65+
returnSqlServer7_0;
66+
}
4967
else
5068
{
5169
// Not supported TDS version
@@ -79,7 +97,7 @@ public static Version Resolve(Version tdsServer, Version tdsClient)
7997
/// </summary>
8098
publicstaticboolIsSupported(VersiontdsVersion)
8199
{
82-
returntdsVersion>=SqlServer2005&&tdsVersion<=SqlServer2012;
100+
returntdsVersion>=SqlServer7_0&&tdsVersion<=SqlServer2012;
83101
}
84102
}
85103
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp