mirror of
git://git.tartarus.org/simon/puzzles.git
synced 2025-04-21 08:01:30 -07:00
Integer overflow in game_size(). Oops.
[originally from svn r5921]
This commit is contained in:
7
rect.c
7
rect.c
@ -2307,9 +2307,12 @@ static void game_size(game_params *params, game_drawstate *ds,
|
|||||||
* Each window dimension equals the tile size times 1.5 more
|
* Each window dimension equals the tile size times 1.5 more
|
||||||
* than the grid dimension (the border is 3/4 the width of the
|
* than the grid dimension (the border is 3/4 the width of the
|
||||||
* tiles).
|
* tiles).
|
||||||
|
*
|
||||||
|
* We must cast to unsigned before multiplying by two, because
|
||||||
|
* *x might be INT_MAX.
|
||||||
*/
|
*/
|
||||||
tsx = 2 * *x / (2 * params->w + 3);
|
tsx = 2 * (unsigned)*x / (2 * params->w + 3);
|
||||||
tsy = 2 * *y / (2 * params->h + 3);
|
tsy = 2 * (unsigned)*y / (2 * params->h + 3);
|
||||||
ts = min(tsx, tsy);
|
ts = min(tsx, tsy);
|
||||||
if (expand)
|
if (expand)
|
||||||
ds->tilesize = ts;
|
ds->tilesize = ts;
|
||||||
|
Reference in New Issue
Block a user