- const s16 full_d_max = std::min(adjustDist(m_max_send_distance, camera_fov), wanted_range);
- const s16 d_opt = std::min(adjustDist(m_block_optimize_distance, camera_fov), wanted_range);
+ // Distrust client-sent FOV and get server-set player object property
+ // zoom FOV (degrees) as a check to avoid hacked clients using FOV to load
+ // distant world.
+ float prop_zoom_fov = sao->getZoomFOV() * core::DEGTORAD;
+
+ const s16 full_d_max = std::min(adjustDist(m_max_send_distance, prop_zoom_fov),
+ wanted_range);
+ const s16 d_opt = std::min(adjustDist(m_block_optimize_distance, prop_zoom_fov),
+ wanted_range);