From cabf7e5249467f19b3a59c0dc130ccda7355d1d6 Mon Sep 17 00:00:00 2001 From: antiduh Date: Thu, 3 Jul 2014 20:16:22 +0000 Subject: [PATCH] Use the package properties to know how big to make the token buffers. --- NSspi/Contexts/ClientContext.cs | 8 ++++++-- NSspi/Contexts/ServerContext.cs | 6 +++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/NSspi/Contexts/ClientContext.cs b/NSspi/Contexts/ClientContext.cs index 93b5e4e..b00b33a 100644 --- a/NSspi/Contexts/ClientContext.cs +++ b/NSspi/Contexts/ClientContext.cs @@ -87,8 +87,12 @@ namespace NSspi.Contexts throw new InvalidOperationException( "Must provide the server's response when continuing the init process." ); } - - outTokenBuffer = new SecureBuffer( new byte[12288], BufferType.Token ); + // The security package tells us how big its biggest token will be. We'll allocate a buffer + // that size, and it'll tell us how much it used. + outTokenBuffer = new SecureBuffer( + new byte[ this.Credential.PackageInfo.MaxTokenLength ], + BufferType.Token + ); serverBuffer = null; if ( serverToken != null ) diff --git a/NSspi/Contexts/ServerContext.cs b/NSspi/Contexts/ServerContext.cs index fa09af7..adfffc8 100644 --- a/NSspi/Contexts/ServerContext.cs +++ b/NSspi/Contexts/ServerContext.cs @@ -79,7 +79,11 @@ namespace NSspi.Contexts } clientBuffer = new SecureBuffer( clientToken, BufferType.Token ); - outBuffer = new SecureBuffer( new byte[12288], BufferType.Token ); + + outBuffer = new SecureBuffer( + new byte[ this.Credential.PackageInfo.MaxTokenLength ], + BufferType.Token + ); using ( clientAdapter = new SecureBufferAdapter( clientBuffer ) ) {