diff --git a/libxrdp/libxrdp.c b/libxrdp/libxrdp.c index 0379379c..7018961f 100644 --- a/libxrdp/libxrdp.c +++ b/libxrdp/libxrdp.c @@ -1959,30 +1959,33 @@ libxrdp_process_monitor_stream(struct stream *s, } in_uint32_le(s, monitor_layout->desktop_scale_factor); - if (monitor_layout->desktop_scale_factor < 100 - || monitor_layout->desktop_scale_factor > 500 - || (monitor_layout->desktop_scale_factor != 100 - && monitor_layout->desktop_scale_factor != 140 - && monitor_layout->desktop_scale_factor != 180)) + int check_desktop_scale_factor + = monitor_layout->desktop_scale_factor < 100 + || monitor_layout->desktop_scale_factor > 500; + if (check_desktop_scale_factor) { LOG(LOG_LEVEL_WARNING, "libxrdp_process_monitor_stream:" - " desktop_scale_factor is not within valid range. Assuming 100." - " Value was: %d", + " desktop_scale_factor is not within valid range" + " of [100, 500]. Assuming 100. Value was: %d", monitor_layout->desktop_scale_factor); - monitor_layout->desktop_scale_factor = 100; } in_uint32_le(s, monitor_layout->device_scale_factor); - if (monitor_layout->device_scale_factor < 100 - || monitor_layout->device_scale_factor > 500 - || (monitor_layout->device_scale_factor != 100 - && monitor_layout->device_scale_factor != 140 - && monitor_layout->device_scale_factor != 180)) + int check_device_scale_factor + = monitor_layout->device_scale_factor != 100 + && monitor_layout->device_scale_factor != 140 + && monitor_layout->device_scale_factor != 180; + if (check_device_scale_factor) { LOG(LOG_LEVEL_WARNING, "libxrdp_process_monitor_stream:" - " device_scale_factor is not within valid range. Assuming 100." - " Value was: %d", + " device_scale_factor a valid value (One of 100, 140, 180)." + " Assuming 100. Value was: %d", monitor_layout->device_scale_factor); + } + + if (check_desktop_scale_factor || check_device_scale_factor) + { + monitor_layout->desktop_scale_factor = 100; monitor_layout->device_scale_factor = 100; } diff --git a/tests/libxrdp/test_libxrdp_process_monitor_stream.c b/tests/libxrdp/test_libxrdp_process_monitor_stream.c index 302f4d24..6cf2cfe1 100644 --- a/tests/libxrdp/test_libxrdp_process_monitor_stream.c +++ b/tests/libxrdp/test_libxrdp_process_monitor_stream.c @@ -273,7 +273,7 @@ START_TEST(test_libxrdp_process_monitor_stream__with_sextuple_monitor_happy_path ck_assert_int_eq(description->minfo[2].physical_height, 1000); ck_assert_int_eq(description->minfo[2].orientation, 0); ck_assert_int_eq(description->minfo[2].desktop_scale_factor, 100); - ck_assert_int_eq(description->minfo[2].device_scale_factor, 140); + ck_assert_int_eq(description->minfo[2].device_scale_factor, 100); ck_assert_int_eq(description->minfo[2].is_primary, 0); ck_assert_int_eq(description->minfo[3].left, 0); @@ -342,7 +342,7 @@ START_TEST(test_libxrdp_process_monitor_stream__with_sextuple_monitor_happy_path ck_assert_int_eq(description->minfo_wm[2].physical_height, 1000); ck_assert_int_eq(description->minfo_wm[2].orientation, 0); ck_assert_int_eq(description->minfo_wm[2].desktop_scale_factor, 100); - ck_assert_int_eq(description->minfo_wm[2].device_scale_factor, 140); + ck_assert_int_eq(description->minfo_wm[2].device_scale_factor, 100); ck_assert_int_eq(description->minfo_wm[2].is_primary, 0); ck_assert_int_eq(description->minfo_wm[3].left, 0);