(_gss_ntlm_import_name): add support for GSS_C_NT_HOSTBASED_SERVICE names
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@19382 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
		| @@ -42,9 +42,49 @@ OM_uint32 _gss_ntlm_import_name | |||||||
|             gss_name_t * output_name |             gss_name_t * output_name | ||||||
|            ) |            ) | ||||||
| { | { | ||||||
|     if (minor_status) |     char *name, *p, *p2; | ||||||
| 	*minor_status = 0; |     ntlm_name n; | ||||||
|  |  | ||||||
|  |     *minor_status = 0; | ||||||
|  |  | ||||||
|     if (output_name) |     if (output_name) | ||||||
| 	*output_name = GSS_C_NO_NAME; | 	*output_name = GSS_C_NO_NAME; | ||||||
|  |  | ||||||
|  |     if (!gss_oid_equal(input_name_type, GSS_C_NT_HOSTBASED_SERVICE)) | ||||||
|  | 	return GSS_S_BAD_NAMETYPE; | ||||||
|  |  | ||||||
|  |     name = malloc(input_name_type->length + 1); | ||||||
|  |     if (name == NULL) { | ||||||
|  | 	*minor_status = ENOMEM; | ||||||
|  | 	return GSS_S_FAILURE; | ||||||
|  |     } | ||||||
|  |     memcpy(name, input_name_buffer->value, input_name_buffer->length); | ||||||
|  |     name[input_name_buffer->length] = '\0'; | ||||||
|  |  | ||||||
|  |     /* find "domain" part of the name and uppercase it */ | ||||||
|  |     p = strchr(name, '@'); | ||||||
|  |     if (p == NULL) | ||||||
|  | 	return GSS_S_BAD_NAME; | ||||||
|  |     p++; | ||||||
|  |     p2 = strchr(p, '.'); | ||||||
|  |     if (p2 && p2[1] != '\0') { | ||||||
|  | 	p = p2 + 1; | ||||||
|  | 	p2 = strchr(p, '.'); | ||||||
|  | 	if (p2) | ||||||
|  | 	    *p2 = '\0'; | ||||||
|  |     } | ||||||
|  |     strupr(p); | ||||||
|  |      | ||||||
|  |     n = malloc(sizeof(n) + strlen(p)); | ||||||
|  |     if (n == NULL) { | ||||||
|  | 	free(name); | ||||||
|  | 	*minor_status = ENOMEM; | ||||||
|  | 	return GSS_S_FAILURE; | ||||||
|  |     } | ||||||
|  |     strcpy(n->domain, p); | ||||||
|  |     free(name); | ||||||
|  |  | ||||||
|  |     *output_name = (gss_name_t)n; | ||||||
|  |  | ||||||
|     return GSS_S_COMPLETE; |     return GSS_S_COMPLETE; | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Love Hörnquist Åstrand
					Love Hörnquist Åstrand