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; }
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); }
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); }
gchar * read_string (const guint8 *buffer, gsize buffer_length, gsize string_length, gsize *offset) { return (gchar *) read_string8 (buffer, buffer_length, string_length, offset); }