Example #1
0
gchar *
read_padded_string (const guint8 *buffer, gsize buffer_length, gsize string_length, gsize *offset)
{
    guint8 *value = read_string8 (buffer, buffer_length, string_length, offset);
    read_padding (pad (string_length), offset);
    return (gchar *) value;
}
Example #2
0
static void
decode_accept (XDMCPClient *client, const guint8 *buffer, gssize buffer_length)
{
    XDMCPAccept *message = g_malloc (sizeof (XDMCPAccept));

    gsize offset = 0;
    message->session_id = read_card32 (buffer, buffer_length, X_BYTE_ORDER_MSB, &offset);
    guint16 length = read_card16 (buffer, buffer_length, X_BYTE_ORDER_MSB, &offset);
    message->authentication_name = read_string (buffer, buffer_length, length, &offset);
    message->authentication_data_length = read_card16 (buffer, buffer_length, X_BYTE_ORDER_MSB, &offset);
    message->authentication_data = read_string8 (buffer, buffer_length, message->authentication_data_length, &offset);
    length = read_card16 (buffer, buffer_length, X_BYTE_ORDER_MSB, &offset);
    message->authorization_name = read_string (buffer, buffer_length, length, &offset);
    message->authorization_data_length = read_card16 (buffer, buffer_length, X_BYTE_ORDER_MSB, &offset);
    message->authorization_data = read_string8 (buffer, buffer_length, length, &offset);

    g_signal_emit (client, xdmcp_client_signals[XDMCP_CLIENT_ACCEPT], 0, message);

    g_free (message->authentication_name);
    g_free (message->authentication_data);
    g_free (message->authorization_name);
    g_free (message->authorization_data);
    g_free (message);
}
Example #3
0
static void
decode_decline (XDMCPClient *client, const guint8 *buffer, gssize buffer_length)
{
    XDMCPDecline *message = g_malloc0 (sizeof (XDMCPDecline));

    gsize offset = 0;
    guint16 length = read_card16 (buffer, buffer_length, X_BYTE_ORDER_MSB, &offset);
    message->status = read_string (buffer, buffer_length, length, &offset);
    length = read_card16 (buffer, buffer_length, X_BYTE_ORDER_MSB, &offset);
    message->authentication_name = read_string (buffer, buffer_length, length, &offset);
    message->authentication_data_length = read_card16 (buffer, buffer_length, X_BYTE_ORDER_MSB, &offset);
    message->authentication_data = read_string8 (buffer, buffer_length, message->authentication_data_length, &offset);

    g_signal_emit (client, xdmcp_client_signals[XDMCP_CLIENT_DECLINE], 0, message);

    g_free (message->status);
    g_free (message->authentication_name);
    g_free (message->authentication_data);
    g_free (message);
}
Example #4
0
gchar *
read_string (const guint8 *buffer, gsize buffer_length, gsize string_length, gsize *offset)
{
    return (gchar *) read_string8 (buffer, buffer_length, string_length, offset);
}