~brandontschaefer/miral/fix-unsigned-to-long-overflow

« back to all changes in this revision

Viewing changes to miral/window_info.cpp

  • Committer: Brandon Schaefer
  • Date: 2017-09-14 21:15:09 UTC
  • Revision ID: brandon.schaefer@canonical.com-20170914211509-qmg98bhn68dpofys
* Set the min_aspect height and max_aspect width as an int::max().
  Due to the aspects being cast into a long, we dont want to overflow
  on a 32bit arch. sizeof(long) >= sizeof(int)

Show diffs side-by-side

added added

removed removed

Lines of Context:
79
79
    confine_pointer(optional_value_or_default(params.confine_pointer(), mir_pointer_unconfined)),
80
80
    width_inc{optional_value_or_default(params.width_inc(), DeltaX{1})},
81
81
    height_inc{optional_value_or_default(params.height_inc(), DeltaY{1})},
82
 
    min_aspect(optional_value_or_default(params.min_aspect(), AspectRatio{0U, std::numeric_limits<unsigned>::max()})),
83
 
    max_aspect(optional_value_or_default(params.max_aspect(), AspectRatio{std::numeric_limits<unsigned>::max(), 0U})),
 
82
    // sizeof(long) >= sizeof(int). We cast from unsigned to long so we need to fit within a signed int without overflowing
 
83
    min_aspect(optional_value_or_default(params.min_aspect(), AspectRatio{0U, std::numeric_limits<int>::max()})),
 
84
    max_aspect(optional_value_or_default(params.max_aspect(), AspectRatio{std::numeric_limits<int>::max(), 0U})),
84
85
    shell_chrome(optional_value_or_default(params.shell_chrome(), mir_shell_chrome_normal))
85
86
{
86
87
    if (params.output_id().is_set())