Sfoglia il codice sorgente

Prevent undefined behaviour in overflow check

Fixes #86
pull/75/merge
Pascal Terjan 1 settimana fa
parent
commit
fb77acff9b
1 ha cambiato i file con 3 aggiunte e 2 eliminazioni
  1. +3
    -2
      caca/canvas.c

+ 3
- 2
caca/canvas.c Vedi File

@@ -26,6 +26,7 @@
# if defined(HAVE_UNISTD_H) # if defined(HAVE_UNISTD_H)
# include <unistd.h> # include <unistd.h>
# endif # endif
# include <limits.h>
#endif #endif


#include "caca.h" #include "caca.h"
@@ -368,12 +369,12 @@ int caca_resize(caca_canvas_t *cv, int width, int height)
int x, y, f, old_width, old_height, old_size; int x, y, f, old_width, old_height, old_size;


/* Check for overflow */ /* Check for overflow */
int new_size = width * height;
if (new_size < 0 || (width > 0 && new_size / width != height))
if (width != 0 && height > INT_MAX / width)
{ {
seterrno(EOVERFLOW); seterrno(EOVERFLOW);
return -1; return -1;
} }
int new_size = width * height;


old_width = cv->width; old_width = cv->width;
old_height = cv->height; old_height = cv->height;


Caricamento…
Annulla
Salva