sasl_sspi: Tell the server we don't support a GSSAPI receive buffer
This commit is contained in:
parent
5663272435
commit
14b3a2e4c3
@ -471,6 +471,7 @@ CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
|
|||||||
SecBufferDesc input_desc;
|
SecBufferDesc input_desc;
|
||||||
SecBufferDesc wrap_desc;
|
SecBufferDesc wrap_desc;
|
||||||
unsigned long indata = 0;
|
unsigned long indata = 0;
|
||||||
|
unsigned long outdata = 0;
|
||||||
unsigned long qop = 0;
|
unsigned long qop = 0;
|
||||||
unsigned long sec_layer = 0;
|
unsigned long sec_layer = 0;
|
||||||
unsigned long max_size = 0;
|
unsigned long max_size = 0;
|
||||||
@ -552,6 +553,14 @@ CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
|
|||||||
|
|
||||||
/* Extract the maximum message size the server can receive */
|
/* Extract the maximum message size the server can receive */
|
||||||
max_size = ntohl(indata & 0xFFFFFF00);
|
max_size = ntohl(indata & 0xFFFFFF00);
|
||||||
|
if(max_size > 0) {
|
||||||
|
/* The server has told us it supports a maximum receive buffer, however, as
|
||||||
|
we don't require one unless we are encrypting data we, tell the server
|
||||||
|
our receive buffer is zero. */
|
||||||
|
max_size = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
outdata = htonl(max_size) | sec_layer;
|
||||||
|
|
||||||
/* Allocate the trailer */
|
/* Allocate the trailer */
|
||||||
trailer = malloc(sizes.cbSecurityTrailer);
|
trailer = malloc(sizes.cbSecurityTrailer);
|
||||||
@ -572,11 +581,11 @@ CURLcode Curl_sasl_create_gssapi_security_message(struct SessionHandle *data,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Populate the message with the security layer, client supported receive
|
/* Populate the message with the security layer, client supported receive
|
||||||
message size (lets claim to support the same as the server) and
|
message size and authorization identity including the 0x00 based
|
||||||
authorization identity including the 0x00 based terminator. Note: Dispite
|
terminator. Note: Dispite RFC4752 Section 3.1 stating "The authorization
|
||||||
RFC4752 Section 3.1 stating "The authorization identity is not terminated
|
identity is not terminated with the zero-valued (%x00) octet." it seems
|
||||||
with the zero-valued (%x00) octet." it seems necessary to include it. */
|
necessary to include it. */
|
||||||
memcpy(message, &indata, 4);
|
memcpy(message, &outdata, 4);
|
||||||
strcpy((char *)message + 4, names.sUserName);
|
strcpy((char *)message + 4, names.sUserName);
|
||||||
|
|
||||||
/* Allocate the padding */
|
/* Allocate the padding */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user