diff --git a/libxrdp/xrdp_rdp.c b/libxrdp/xrdp_rdp.c index 742ba123..ac11ec92 100644 --- a/libxrdp/xrdp_rdp.c +++ b/libxrdp/xrdp_rdp.c @@ -57,70 +57,64 @@ static tui8 g_unknown2[8] = static int APP_CC xrdp_rdp_read_config(struct xrdp_client_info* client_info) { - int fd; int index; struct list* items; struct list* values; char* item; char* value; - fd = g_file_open(XRDP_CFG_FILE); /* xrdp.ini */ - if (fd > 0) + items = list_create(); + items->auto_free = 1; + values = list_create(); + values->auto_free = 1; + file_by_name_read_section(XRDP_CFG_FILE, "globals", items, values); + for (index = 0; index < items->count; index++) { - items = list_create(); - items->auto_free = 1; - values = list_create(); - values->auto_free = 1; - file_read_section(fd, "globals", items, values); - for (index = 0; index < items->count; index++) + item = (char*)list_get_item(items, index); + value = (char*)list_get_item(values, index); + if (g_strcasecmp(item, "bitmap_cache") == 0) { - item = (char*)list_get_item(items, index); - value = (char*)list_get_item(values, index); - if (g_strncasecmp(item, "bitmap_cache", 255) == 0) + if ((g_strcasecmp(value, "yes") == 0) || + (g_strcasecmp(value, "true") == 0) || + (g_strcasecmp(value, "1") == 0)) { - if (g_strncasecmp(value, "yes", 255) == 0 || - g_strncasecmp(value, "true", 255) == 0 || - g_strncasecmp(value, "1", 255) == 0) - { - client_info->use_bitmap_cache = 1; - } + client_info->use_bitmap_cache = 1; } - else if (g_strncasecmp(item, "bitmap_compression", 255) == 0) + } + else if (g_strcasecmp(item, "bitmap_compression") == 0) + { + if (g_strcasecmp(value, "yes") == 0 || + g_strcasecmp(value, "true") == 0 || + g_strcasecmp(value, "1") == 0) + { + client_info->use_bitmap_comp = 1; + } + } + else if (g_strcasecmp(item, "crypt_level") == 0) + { + if (g_strcasecmp(value, "low") == 0) + { + client_info->crypt_level = 1; + } + else if (g_strcasecmp(value, "medium") == 0) { - if (g_strncasecmp(value, "yes", 255) == 0 || - g_strncasecmp(value, "true", 255) == 0 || - g_strncasecmp(value, "1", 255) == 0) - { - client_info->use_bitmap_comp = 1; - } + client_info->crypt_level = 2; } - else if (g_strncasecmp(item, "crypt_level", 255) == 0) + else if (g_strcasecmp(value, "high") == 0) { - if (g_strncasecmp(value, "low", 255) == 0) - { - client_info->crypt_level = 1; - } - else if (g_strncasecmp(value, "medium", 255) == 0) - { - client_info->crypt_level = 2; - } - else if (g_strncasecmp(value, "high", 255) == 0) - { - client_info->crypt_level = 3; - } + client_info->crypt_level = 3; } - else if (g_strcasecmp(item, "channel_code") == 0) + } + else if (g_strcasecmp(item, "channel_code") == 0) + { + if (g_strcasecmp(value, "1") == 0) { - if (g_strcasecmp(value, "1") == 0) - { - client_info->channel_code = 1; - } + client_info->channel_code = 1; } } - list_delete(items); - list_delete(values); - g_file_close(fd); } + list_delete(items); + list_delete(values); return 0; } diff --git a/libxrdp/xrdp_sec.c b/libxrdp/xrdp_sec.c index 375d8a9b..67ae6ce9 100644 --- a/libxrdp/xrdp_sec.c +++ b/libxrdp/xrdp_sec.c @@ -130,7 +130,6 @@ xrdp_sec_create(struct xrdp_rdp* owner, int sck, int crypt_level, struct xrdp_sec* self; struct list* items; struct list* values; - int fd; int index; char* item; char* value; @@ -161,39 +160,34 @@ xrdp_sec_create(struct xrdp_rdp* owner, int sck, int crypt_level, g_random(self->server_random, 32); self->mcs_layer = xrdp_mcs_create(self, sck, &self->client_mcs_data, &self->server_mcs_data); - fd = g_file_open(XRDP_KEY_FILE); /* rsakeys.ini */ - if (fd > 0) - { - items = list_create(); - items->auto_free = 1; - values = list_create(); - values->auto_free = 1; - file_read_section(fd, "keys", items, values); - for (index = 0; index < items->count; index++) + items = list_create(); + items->auto_free = 1; + values = list_create(); + values->auto_free = 1; + file_by_name_read_section(XRDP_KEY_FILE, "keys", items, values); + for (index = 0; index < items->count; index++) + { + item = (char*)list_get_item(items, index); + value = (char*)list_get_item(values, index); + if (g_strcasecmp(item, "pub_exp") == 0) { - item = (char*)list_get_item(items, index); - value = (char*)list_get_item(values, index); - if (g_strncasecmp(item, "pub_exp", 255) == 0) - { - hex_str_to_bin(value, self->pub_exp, 4); - } - else if (g_strncasecmp(item, "pub_mod", 255) == 0) - { - hex_str_to_bin(value, self->pub_mod, 64); - } - else if (g_strncasecmp(item, "pub_sig", 255) == 0) - { - hex_str_to_bin(value, self->pub_sig, 64); - } - else if (g_strncasecmp(item, "pri_exp", 255) == 0) - { - hex_str_to_bin(value, self->pri_exp, 64); - } + hex_str_to_bin(value, self->pub_exp, 4); + } + else if (g_strcasecmp(item, "pub_mod") == 0) + { + hex_str_to_bin(value, self->pub_mod, 64); + } + else if (g_strcasecmp(item, "pub_sig") == 0) + { + hex_str_to_bin(value, self->pub_sig, 64); + } + else if (g_strcasecmp(item, "pri_exp") == 0) + { + hex_str_to_bin(value, self->pri_exp, 64); } - list_delete(items); - list_delete(values); - g_file_close(fd); } + list_delete(items); + list_delete(values); self->chan_layer = xrdp_channel_create(self, self->mcs_layer); DEBUG((" out xrdp_sec_create")); return self;