Ejemplo n.º 1
0
OM_uint32 generic_gss_add_buffer_set_member
	   (OM_uint32 * minor_status,
	    const gss_buffer_t member_buffer,
	    gss_buffer_set_t *buffer_set)
{
    gss_buffer_set_t set;
    gss_buffer_t p;
    OM_uint32 ret;

    if (*buffer_set == GSS_C_NO_BUFFER_SET) {
	ret = generic_gss_create_empty_buffer_set(minor_status,
						  buffer_set);
	if (ret) {
	    return ret;
	}
    }

    set = *buffer_set;
    set->elements = (gss_buffer_desc *)realloc(set->elements,
					       (set->count + 1) *
						sizeof(gss_buffer_desc));
    if (set->elements == NULL) {
	free(set);  /* SUNW17PACresync - MIT17 bug */
	*minor_status = ENOMEM;
	return GSS_S_FAILURE;
    }

    p = &set->elements[set->count];

    p->value = malloc(member_buffer->length);
    if (p->value == NULL) {
	free(set->elements); /* SUNW17PACresync - MIT17 bug */
	free(set); /* SUNW17PACresync - MIT17 bug */
	*minor_status = ENOMEM;
	return GSS_S_FAILURE;
    }
    (void) memcpy(p->value, member_buffer->value, member_buffer->length);
    p->length = member_buffer->length;

    set->count++;

    *minor_status = 0;
    return GSS_S_COMPLETE;
}
Ejemplo n.º 2
0
OM_uint32 KRB5_CALLCONV gss_create_empty_buffer_set
(OM_uint32 * minor_status,
 gss_buffer_set_t *buffer_set)
{
    return generic_gss_create_empty_buffer_set(minor_status, buffer_set);
}