diff options
| author | Simon Tatham <anakin@pobox.com> | 2005-06-07 20:44:14 +0000 |
|---|---|---|
| committer | Simon Tatham <anakin@pobox.com> | 2005-06-07 20:44:14 +0000 |
| commit | b1e706bf7ea74263e9100506ef11f8060cc76616 (patch) | |
| tree | 3390f7ffd6d788546331f7b09bbb94c7cdcf82d0 | |
| parent | 8add7421dfc72c2fcdeb213c32a474e9af6ee4bb (diff) | |
| download | puzzles-b1e706bf7ea74263e9100506ef11f8060cc76616.zip puzzles-b1e706bf7ea74263e9100506ef11f8060cc76616.tar.gz puzzles-b1e706bf7ea74263e9100506ef11f8060cc76616.tar.bz2 puzzles-b1e706bf7ea74263e9100506ef11f8060cc76616.tar.xz | |
Integer overflow in game_size(). Oops.
[originally from svn r5921]
| -rw-r--r-- | rect.c | 7 |
1 files changed, 5 insertions, 2 deletions
@@ -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 * than the grid dimension (the border is 3/4 the width of the * tiles). + * + * We must cast to unsigned before multiplying by two, because + * *x might be INT_MAX. */ - tsx = 2 * *x / (2 * params->w + 3); - tsy = 2 * *y / (2 * params->h + 3); + tsx = 2 * (unsigned)*x / (2 * params->w + 3); + tsy = 2 * (unsigned)*y / (2 * params->h + 3); ts = min(tsx, tsy); if (expand) ds->tilesize = ts; |