
Made the packet sequence number handling automatic so that it always uses the correct one. All functions now have documentation in them. Cleaned up code and added comments to GSSAPI code.
74 lines
1.7 KiB
C
74 lines
1.7 KiB
C
/*
|
|
* Copyright (c) 2016 MariaDB Corporation Ab
|
|
*
|
|
* Use of this software is governed by the Business Source License included
|
|
* in the LICENSE.TXT file and at www.mariadb.com/bsl.
|
|
*
|
|
* Change Date: 2019-07-01
|
|
*
|
|
* On the date above, in accordance with the Business Source License, use
|
|
* of this software will be governed by version 2 or later of the General
|
|
* Public License.
|
|
*/
|
|
|
|
#include "gssapi_auth.h"
|
|
#include <maxscale/alloc.h>
|
|
#include <maxscale/log_manager.h>
|
|
|
|
void* gssapi_auth_alloc(void *instance)
|
|
{
|
|
gssapi_auth_t* rval = MXS_MALLOC(sizeof(gssapi_auth_t));
|
|
|
|
if (rval)
|
|
{
|
|
rval->state = GSSAPI_AUTH_INIT;
|
|
rval->principal_name = NULL;
|
|
rval->principal_name_len = 0;
|
|
rval->sequence = 0;
|
|
}
|
|
|
|
return rval;
|
|
}
|
|
|
|
void gssapi_auth_free(void *data)
|
|
{
|
|
if (data)
|
|
{
|
|
gssapi_auth_t *auth = (gssapi_auth_t*)data;
|
|
MXS_FREE(auth->principal_name);
|
|
MXS_FREE(auth);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @brief Report GSSAPI errors
|
|
*
|
|
* @param major GSSAPI major error number
|
|
* @param minor GSSAPI minor error number
|
|
*/
|
|
void report_error(OM_uint32 major, OM_uint32 minor)
|
|
{
|
|
OM_uint32 status_maj = major;
|
|
OM_uint32 status_min = minor;
|
|
OM_uint32 res = 0;
|
|
gss_buffer_desc buf = {0, 0};
|
|
|
|
major = gss_display_status(&minor, status_maj, GSS_C_GSS_CODE, NULL, &res, &buf);
|
|
|
|
{
|
|
char sbuf[buf.length + 1];
|
|
memcpy(sbuf, buf.value, buf.length);
|
|
sbuf[buf.length] = '\0';
|
|
MXS_ERROR("GSSAPI Major Error: %s", sbuf);
|
|
}
|
|
|
|
major = gss_display_status(&minor, status_min, GSS_C_MECH_CODE, NULL, &res, &buf);
|
|
|
|
{
|
|
char sbuf[buf.length + 1];
|
|
memcpy(sbuf, buf.value, buf.length);
|
|
sbuf[buf.length] = '\0';
|
|
MXS_ERROR("GSSAPI Minor Error: %s", sbuf);
|
|
}
|
|
}
|