(gss_adat): leak less memory and check return value from asprintf

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@10651 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Assar Westerlund
2001-09-04 09:45:09 +00:00
parent 32e654f748
commit 0fa47f785f

View File

@@ -166,17 +166,17 @@ gss_adat(void *app_data, void *buf, size_t len)
OM_uint32 maj_stat, min_stat; OM_uint32 maj_stat, min_stat;
gss_name_t client_name; gss_name_t client_name;
struct gss_data *d = app_data; struct gss_data *d = app_data;
struct gss_channel_bindings_struct bindings;
gss_channel_bindings_t bindings = malloc(sizeof(*bindings));
sockaddr_to_gss_address (his_addr, sockaddr_to_gss_address (his_addr,
&bindings->initiator_addrtype, &bindings.initiator_addrtype,
&bindings->initiator_address); &bindings.initiator_address);
sockaddr_to_gss_address (ctrl_addr, sockaddr_to_gss_address (ctrl_addr,
&bindings->acceptor_addrtype, &bindings.acceptor_addrtype,
&bindings->acceptor_address); &bindings.acceptor_address);
bindings->application_data.length = 0; bindings.application_data.length = 0;
bindings->application_data.value = NULL; bindings.application_data.value = NULL;
input_token.value = buf; input_token.value = buf;
input_token.length = len; input_token.length = len;
@@ -194,7 +194,7 @@ gss_adat(void *app_data, void *buf, size_t len)
&d->context_hdl, &d->context_hdl,
GSS_C_NO_CREDENTIAL, GSS_C_NO_CREDENTIAL,
&input_token, &input_token,
bindings, &bindings,
&client_name, &client_name,
NULL, NULL,
&output_token, &output_token,
@@ -272,6 +272,11 @@ import_name(const char *kname, const char *host, gss_name_t *target_name)
gss_buffer_desc name; gss_buffer_desc name;
name.length = asprintf((char**)&name.value, "%s@%s", kname, host); name.length = asprintf((char**)&name.value, "%s@%s", kname, host);
if (name.value == NULL) {
printf("Out of memory\n");
return AUTH_ERROR;
}
maj_stat = gss_import_name(&min_stat, maj_stat = gss_import_name(&min_stat,
&name, &name,
GSS_C_NT_HOSTBASED_SERVICE, GSS_C_NT_HOSTBASED_SERVICE,