(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:
@@ -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,
|
||||||
|
Reference in New Issue
Block a user