auth: do not append zero-terminator to authorisation id in kerberos
RFC4752 Section 3.1 states "The authorization identity is not terminated with a zero-valued (%x00) octet". Although a comment in code said it may be needed anyway, nothing confirms it. In addition, servers may consider it as part of the identity, causing a failure. Closes #7008
This commit is contained in:
parent
396a2d7fe3
commit
7da2990b19
@ -247,8 +247,8 @@ CURLcode Curl_auth_create_gssapi_security_message(struct Curl_easy *data,
|
||||
|
||||
/* Allocate our message */
|
||||
messagelen = 4;
|
||||
if(authzid && *authzid)
|
||||
messagelen += strlen(authzid) + 1;
|
||||
if(authzid)
|
||||
messagelen += strlen(authzid);
|
||||
message = malloc(messagelen);
|
||||
if(!message)
|
||||
return CURLE_OUT_OF_MEMORY;
|
||||
@ -260,13 +260,10 @@ CURLcode Curl_auth_create_gssapi_security_message(struct Curl_easy *data,
|
||||
message[2] = (max_size >> 8) & 0xFF;
|
||||
message[3] = max_size & 0xFF;
|
||||
|
||||
/* If given, append the authorization identity including the 0x00 based
|
||||
terminator. Note: Despite RFC4752 Section 3.1 stating "The authorization
|
||||
identity is not terminated with the zero-valued (%x00) octet." it seems
|
||||
necessary to include it. */
|
||||
/* If given, append the authorization identity. */
|
||||
|
||||
if(authzid && *authzid)
|
||||
strcpy((char *) message + 4, authzid);
|
||||
memcpy(message + 4, authzid, messagelen - 4);
|
||||
|
||||
/* Setup the "authentication data" security buffer */
|
||||
input_token.value = message;
|
||||
|
||||
@ -344,8 +344,8 @@ CURLcode Curl_auth_create_gssapi_security_message(struct Curl_easy *data,
|
||||
|
||||
/* Allocate our message */
|
||||
messagelen = 4;
|
||||
if(authzid && *authzid)
|
||||
messagelen += strlen(authzid) + 1;
|
||||
if(authzid)
|
||||
messagelen += strlen(authzid);
|
||||
message = malloc(messagelen);
|
||||
if(!message) {
|
||||
free(trailer);
|
||||
@ -360,13 +360,10 @@ CURLcode Curl_auth_create_gssapi_security_message(struct Curl_easy *data,
|
||||
message[2] = (max_size >> 8) & 0xFF;
|
||||
message[3] = max_size & 0xFF;
|
||||
|
||||
/* If given, append the authorization identity including the 0x00 based
|
||||
terminator. Note: Despite RFC4752 Section 3.1 stating "The authorization
|
||||
identity is not terminated with the zero-valued (%x00) octet." it seems
|
||||
necessary to include it. */
|
||||
/* If given, append the authorization identity. */
|
||||
|
||||
if(authzid && *authzid)
|
||||
strcpy((char *) message + 4, authzid);
|
||||
memcpy(message + 4, authzid, messagelen - 4);
|
||||
|
||||
/* Allocate the padding */
|
||||
padding = malloc(sizes.cbBlockSize);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user