(kdc_alloc): free memory on failure, pointed out by Rafal Malinowski.
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@21037 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
		| @@ -50,6 +50,8 @@ struct ntlmkrb5 { | |||||||
|     krb5_data sessionkey; |     krb5_data sessionkey; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | static OM_uint32 kdc_destroy(OM_uint32 *, void *); | ||||||
|  |  | ||||||
| /* | /* | ||||||
|  * Get credential cache that the ntlm code can use to talk to the KDC |  * Get credential cache that the ntlm code can use to talk to the KDC | ||||||
|  * using the digest API. |  * using the digest API. | ||||||
| @@ -126,26 +128,31 @@ kdc_alloc(OM_uint32 *minor, void **ctx) | |||||||
| { | { | ||||||
|     krb5_error_code ret; |     krb5_error_code ret; | ||||||
|     struct ntlmkrb5 *c; |     struct ntlmkrb5 *c; | ||||||
|  |     OM_uint32 junk; | ||||||
|  |  | ||||||
|     c = calloc(1, sizeof(*c)); |     c = calloc(1, sizeof(*c)); | ||||||
|  |     if (c == NULL) { | ||||||
|  | 	*minor = ENOMEM; | ||||||
|  | 	return GSS_S_FAILURE; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     ret = krb5_init_context(&c->context); |     ret = krb5_init_context(&c->context); | ||||||
|     if (ret) { |     if (ret) { | ||||||
| 	/* free */ | 	kdc_destroy(&junk, c); | ||||||
| 	*minor = ret; | 	*minor = ret; | ||||||
| 	return GSS_S_FAILURE; | 	return GSS_S_FAILURE; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     ret = get_ccache(c->context, &c->id); |     ret = get_ccache(c->context, &c->id); | ||||||
|     if (ret) { |     if (ret) { | ||||||
| 	/* free */ | 	kdc_destroy(&junk, c); | ||||||
| 	*minor = ret; | 	*minor = ret; | ||||||
| 	return GSS_S_FAILURE; | 	return GSS_S_FAILURE; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     ret = krb5_ntlm_alloc(c->context, &c->ntlm); |     ret = krb5_ntlm_alloc(c->context, &c->ntlm); | ||||||
|     if (ret) { |     if (ret) { | ||||||
| 	/* free */ | 	kdc_destroy(&junk, c); | ||||||
| 	*minor = ret; | 	*minor = ret; | ||||||
| 	return GSS_S_FAILURE; | 	return GSS_S_FAILURE; | ||||||
|     } |     } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Love Hörnquist Åstrand
					Love Hörnquist Åstrand