void gcc_read_server_data_blocks(STREAM* s, rdpSettings *settings, int length) { uint16 type; uint16 offset = 0; uint16 blockLength; while (offset < length) { gcc_read_user_data_header(s, &type, &blockLength); switch (type) { case SC_CORE: gcc_read_server_core_data(s, settings); break; case SC_SECURITY: gcc_read_server_security_data(s, settings); break; case SC_NET: gcc_read_server_network_data(s, settings); break; default: break; } offset += blockLength; } }
BOOL gcc_read_server_data_blocks(wStream* s, rdpSettings* settings, int length) { UINT16 type; UINT16 offset = 0; UINT16 blockLength; BYTE* holdp; while (offset < length) { holdp = Stream_Pointer(s); if (!gcc_read_user_data_header(s, &type, &blockLength)) { fprintf(stderr, "gcc_read_server_data_blocks: gcc_read_user_data_header failed\n"); return FALSE; } switch (type) { case SC_CORE: if (!gcc_read_server_core_data(s, settings)) { fprintf(stderr, "gcc_read_server_data_blocks: gcc_read_server_core_data failed\n"); return FALSE; } break; case SC_SECURITY: if (!gcc_read_server_security_data(s, settings)) { fprintf(stderr, "gcc_read_server_data_blocks: gcc_read_server_security_data failed\n"); return FALSE; } break; case SC_NET: if (!gcc_read_server_network_data(s, settings)) { fprintf(stderr, "gcc_read_server_data_blocks: gcc_read_server_network_data failed\n"); return FALSE; } break; default: fprintf(stderr, "gcc_read_server_data_blocks: ignoring type=%hu\n", type); break; } offset += blockLength; Stream_Pointer(s) = holdp + blockLength; } return TRUE; }
boolean gcc_read_server_data_blocks(STREAM* s, rdpSettings* settings, int length) { uint16 type; uint16 offset = 0; uint16 blockLength; uint8* holdp; while (offset < length) { holdp = s->p; if (!gcc_read_user_data_header(s, &type, &blockLength)) { printf("gcc_read_server_data_blocks: gcc_read_user_data_header failed\n"); return false; } switch (type) { case SC_CORE: if (!gcc_read_server_core_data(s, settings)) { printf("gcc_read_server_data_blocks: gcc_read_server_core_data failed\n"); return false; } break; case SC_SECURITY: if (!gcc_read_server_security_data(s, settings)) { printf("gcc_read_server_data_blocks: gcc_read_server_security_data failed\n"); return false; } break; case SC_NET: if (!gcc_read_server_network_data(s, settings)) { printf("gcc_read_server_data_blocks: gcc_read_server_network_data failed\n"); return false; } break; default: printf("gcc_read_server_data_blocks: ignoring type=%hu\n", type); break; } offset += blockLength; s->p = holdp + blockLength; } return true; }
BOOL gcc_read_server_data_blocks(wStream* s, rdpMcs* mcs, int length) { UINT16 type; UINT16 offset = 0; UINT16 blockLength; BYTE* holdp; while (offset < length) { holdp = Stream_Pointer(s); if (!gcc_read_user_data_header(s, &type, &blockLength)) { WLog_ERR(TAG, "gcc_read_server_data_blocks: gcc_read_user_data_header failed"); return FALSE; } switch (type) { case SC_CORE: if (!gcc_read_server_core_data(s, mcs)) { WLog_ERR(TAG, "gcc_read_server_data_blocks: gcc_read_server_core_data failed"); return FALSE; } break; case SC_SECURITY: if (!gcc_read_server_security_data(s, mcs)) { WLog_ERR(TAG, "gcc_read_server_data_blocks: gcc_read_server_security_data failed"); return FALSE; } break; case SC_NET: if (!gcc_read_server_network_data(s, mcs)) { WLog_ERR(TAG, "gcc_read_server_data_blocks: gcc_read_server_network_data failed"); return FALSE; } break; case SC_MCS_MSGCHANNEL: if (!gcc_read_server_message_channel_data(s, mcs)) { WLog_ERR(TAG, "gcc_read_server_data_blocks: gcc_read_server_message_channel_data failed"); return FALSE; } break; case SC_MULTITRANSPORT: if (!gcc_read_server_multitransport_channel_data(s, mcs)) { WLog_ERR(TAG, "gcc_read_server_data_blocks: gcc_read_server_multitransport_channel_data failed"); return FALSE; } break; default: WLog_ERR(TAG, "gcc_read_server_data_blocks: ignoring type=%hu", type); break; } offset += blockLength; Stream_Pointer(s) = holdp + blockLength; } return TRUE; }